Saya mencoba untuk memigrasi formulir web ASP.NET MVC ke ASP.NET Core MVC. Saat ini, saya mengalami masalah dengan Request.UrlReferrer
kelas.
Baris aslinya adalah:
[HttpPost]
public async Task<ActionResult> ContactUsFormSubmit(ContactUs request)
{
var siteUrl = Request.UrlReferrer.ToString().ToLower();
....
}
Namun, dengan ASP.NET Core, UrlReferrer tidak tersedia. Saya telah menemukan yang berikut ini:
Request.Headers["Referer"]
yang mengembalikan StringValues, bukan String. Saya tidak yakin apakah saya harus mencoba menggunakan yang ini atau jika ada solusi lain untuk situasi ini. Request.ServerVariables
juga tidak tersedia atau mungkin saya tidak memiliki namespace. Ruang nama saya adalah sebagai berikut:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
Saya akan sangat menghargai jika seseorang dapat mengarahkan saya ke arah yang benar.
c#
asp.net-core
asp.net-core-mvc
Kemal Tezer Dilsiz
sumber
sumber
Jawaban:
Kamu hampir sampai. The
StringValues
kelas hanya jenis penggunaan ASP.NET untuk secara efisien mewakili string dalam rangka. Terutama padaHttpContext
obyeknya. Anda bisa memanggilnyaToString()
untuk mengubahnya menjadi string:string referer = Request.Headers["Referer"].ToString();
sumber
Pada penggunaan asp.net inti 2
GetTypedHeaders
sumber
Inilah cara saya mendapatkan pengarah url: -
@{ string referer = Context.Request.Headers["Referer"].ToString(); Uri baseUri = new Uri(referer);} <form asp-action="Login" asp-route-returnUrl="@baseUri.AbsolutePath">
sumber
using Microsoft.AspNetCore.Server.Kestrel.Internal.Http; var referer = ((FrameRequestHeaders)Request.Headers).HeaderReferer.FirstOrDefault();
hampir sama dengan jawaban yang diterima tanpa benang ajaib
sumber
Nuget
paket (Microsoft.AspNetCore.Server.Kestrel
) ... apakah ini juga telah diuji untuk berfungsiIISExpress
?SSL
? dll.?Ini berfungsi (diuji di .NET Core 3.1):
Request
adalah properti dari keduanyaControllerBase
(dan karenanyaController
juga) danHttpContext
, jadi Anda bisa mendapatkannya dari keduanya.Misalnya, untuk mengalihkan ke halaman rujukan dari tindakan pengontrol, cukup lakukan ini:
public IActionResult SomeAction() { return Redirect(Request.GetTypedHeaders().Referer.ToString()); }
sumber