J'essaie de migrer un formulaire Web ASP.NET MVC vers ASP.NET Core MVC. Actuellement, j'ai des problèmes avec le Request.UrlReferrer
classe.
La ligne d'origine est:
[HttpPost]
public async Task<ActionResult> ContactUsFormSubmit(ContactUs request)
{
var siteUrl = Request.UrlReferrer.ToString().ToLower();
....
}
Cependant, avec ASP.NET Core, UrlReferrer n'est pas disponible. J'ai trouvé ce qui suit:
Request.Headers["Referer"]
qui retourne StringValues au lieu d'un String. Je ne suis pas sûr si je devrais essayer d'utiliser celui-ci ou s'il existe d'autres solutions à cette situation. Request.ServerVariables
n'est pas non plus disponible ou peut-être que je n'ai pas l'espace de noms. Mes espaces de noms sont les suivants:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
J'apprécierais vraiment si quelqu'un pouvait me diriger dans la bonne direction.
Tu y es presque. La classe StringValues
n'est qu'un type utilisé par ASP.NET pour représenter efficacement des chaînes dans la structure. Surtout dans l'objet HttpContext
. Vous pouvez simplement appeler ToString()
pour le convertir en chaîne:
string referer = Request.Headers["Referer"].ToString();
Depuis asp.net core 2, utilisez GetTypedHeaders
RequestHeaders header = request.GetTypedHeaders();
Uri uriReferer = header.Referer;
Voici comment j'ai eu URL référent: -
@{
string referer = Context.Request.Headers["Referer"].ToString();
Uri baseUri = new Uri(referer);}
<form asp-action="Login" asp-route-returnUrl="@baseUri.AbsolutePath">
using Microsoft.AspNetCore.Server.Kestrel.Internal.Http;
var referer = ((FrameRequestHeaders)Request.Headers).HeaderReferer.FirstOrDefault();
presque la même chose que la réponse acceptée sans la chaîne magique