tag route net for data asp all c# asp.net-core asp.net-core-mvc

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