web-dev-qa-db-fra.com

Comment puis-je obtenir URL référent dans ASP.NET Core MVC?

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.

66
Kemal Tezer Dilsiz

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();
112
Henk Mollema

Depuis asp.net core 2, utilisez GetTypedHeaders

RequestHeaders header = request.GetTypedHeaders();
Uri uriReferer = header.Referer;
7
Eric Herlitz

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">
6
Intesar Alam
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

6
Souhaieb Besbes