c# - route - tag helpers asp net core
¿Cómo puedo obtener el URL de referencia en ASP.NET Core MVC? (4)
A partir de asp.net core 2, use
GetTypedHeaders
RequestHeaders header = request.GetTypedHeaders();
Uri uriReferer = header.Referer;
Estoy tratando de migrar un formulario web ASP.NET MVC a ASP.NET Core MVC.
Actualmente, tengo problemas con la clase
Request.UrlReferrer
.
La línea original es:
[HttpPost]
public async Task<ActionResult> ContactUsFormSubmit(ContactUs request)
{
var siteUrl = Request.UrlReferrer.ToString().ToLower();
....
}
Sin embargo, con ASP.NET Core, UrlReferrer no está disponible. He encontrado lo siguiente:
Request.Headers["Referer"]
que devuelve StringValues en lugar de una String.
No estoy seguro de si debería intentar usar este o si hay alguna otra solución a esta situación.
Request.ServerVariables
tampoco está disponible o tal vez no tengo el espacio de nombres.
Mis espacios de nombres son los siguientes:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
Realmente agradecería si alguien me puede dirigir en la dirección correcta.
Así es como obtuve el URL de referencia: -
@{
string referer = Context.Request.Headers["Referer"].ToString();
Uri baseUri = new Uri(referer);}
<form asp-action="Login" asp-route-returnUrl="@baseUri.AbsolutePath">
Ya casi estás ahí.
La clase
StringValues
es solo un tipo que ASP.NET usa para representar cadenas de manera eficiente en el marco.
Especialmente en el objeto
HttpContext
.
Simplemente puede llamar a
ToString()
para convertirlo en una cadena:
string referer = Request.Headers["Referer"].ToString();
using Microsoft.AspNetCore.Server.Kestrel.Internal.Http;
var referer = ((FrameRequestHeaders)Request.Headers).HeaderReferer.FirstOrDefault();
casi lo mismo que la respuesta aceptada sin la cuerda mágica