J'essaie de migrer un formulaire Web ASP.NET MVC vers ASP.NET Core MVC. Actuellement, j'ai des problèmes avec la Request.UrlReferrer
classe.
La ligne originale 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 renvoie StringValues au lieu d'une String. Je ne sais pas 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 que quelqu'un puisse me diriger dans la bonne direction.
c#
asp.net-core
asp.net-core-mvc
Kemal Tezer Dilsiz
la source
la source
Réponses:
Tu y es presque. La
StringValues
classe est juste un type utilisé par ASP.NET pour représenter efficacement les chaînes dans le framework. Surtout dans l'HttpContext
objet. Vous pouvez simplement l'appelerToString()
pour le convertir en chaîne:la source
Depuis asp.net core 2, utilisez
GetTypedHeaders
la source
Voici comment j'ai obtenu le référent d'URL: -
la source
presque la même chose que la réponse acceptée sans la chaîne magique
la source
Nuget
package (Microsoft.AspNetCore.Server.Kestrel
) ... cela a-t-il également été testé pour fonctionnerIISExpress
?SSL
? etc.?Cela fonctionne (testé dans .NET Core 3.1):
Request
est une propriété des deuxBaseController
etHttpContext
, vous pouvez donc l'obtenir de l'un ou de l'autre.Par exemple, pour rediriger vers la page de référence à partir d'une action du contrôleur, procédez comme suit:
la source