Estou tentando migrar um formulário da web ASP.NET MVC para ASP.NET Core MVC. Atualmente, estou tendo problemas com a Request.UrlReferrer
classe.
A linha original é:
[HttpPost]
public async Task<ActionResult> ContactUsFormSubmit(ContactUs request)
{
var siteUrl = Request.UrlReferrer.ToString().ToLower();
....
}
No entanto, com ASP.NET Core, UrlReferrer não está disponível. Eu encontrei o seguinte:
Request.Headers["Referer"]
que retorna StringValues em vez de uma String. Não tenho certeza se devo tentar usar este ou se há alguma outra solução para esta situação. Request.ServerVariables
também não está disponível ou talvez eu não tenha o namespace. Meus namespaces são os seguintes:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
Eu realmente apreciaria se alguém pudesse me direcionar na direção certa.
c#
asp.net-core
asp.net-core-mvc
Kemal Tezer Dilsiz
fonte
fonte
Respostas:
Você está quase lá. A
StringValues
classe é apenas um tipo que o ASP.NET usa para representar cadeias de caracteres de forma eficiente na estrutura. Especialmente noHttpContext
objeto. Você pode simplesmente chamáToString()
-lo para convertê-lo em uma string:fonte
A partir do asp.net core 2, use
GetTypedHeaders
fonte
Aqui está como obtive o referenciador de url: -
fonte
quase o mesmo que a resposta aceita sem o fio mágico
fonte
Nuget
pacote (Microsoft.AspNetCore.Server.Kestrel
) ... também foi testado para funcionarIISExpress
?SSL
? etc?Isso funciona (testado no .NET Core 3.1):
Request
é uma propriedade de ambosBaseController
eHttpContext
, portanto, você pode obtê-lo de qualquer um deles.Por exemplo, para redirecionar para a página de referência de uma ação do controlador, basta fazer o seguinte:
fonte