Kem*_*siz 72 c# asp.net-core-mvc asp.net-core
我正在尝试将ASP.NET MVC webform迁移到ASP.NET Core MVC.目前,我在Request.UrlReferrer
上课时遇到了麻烦.
原来的行是:
[HttpPost]
public async Task<ActionResult> ContactUsFormSubmit(ContactUs request)
{
var siteUrl = Request.UrlReferrer.ToString().ToLower();
....
}
Run Code Online (Sandbox Code Playgroud)
但是,使用ASP.NET Core时,UrlReferrer不可用.我发现了以下内容:
Request.Headers["Referer"]
Run Code Online (Sandbox Code Playgroud)
返回StringValues而不是String.我不确定我是否应该尝试使用这个或者是否有任何其他解决方案.Request.ServerVariables
也不可用或者我没有命名空间.我的命名空间如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
Run Code Online (Sandbox Code Playgroud)
如果有人能指引我朝着正确的方向前进,我真的很感激.
Hen*_*ema 120
你快到了.本StringValues
类只是一个类型ASP.NET使用高效地表示在框架中的字符串.特别是在HttpContext
对象中.您可以调用ToString()
它将其转换为字符串:
string referer = Request.Headers["Referer"].ToString();
Run Code Online (Sandbox Code Playgroud)
Mar*_*ese 15
这有效(在 .NET Core 3.1 中测试):
Request.GetTypedHeaders().Referer
Run Code Online (Sandbox Code Playgroud)
Request
是两者ControllerBase
(因此Controller
也是) and的属性HttpContext
,因此您可以从其中任何一个获取它。
例如,要从控制器操作重定向到引用页面,只需执行以下操作:
public IActionResult SomeAction()
{
return Redirect(Request.GetTypedHeaders().Referer.ToString());
}
Run Code Online (Sandbox Code Playgroud)
Eri*_*itz 11
从asp.net core 2开始使用 GetTypedHeaders
RequestHeaders header = request.GetTypedHeaders();
Uri uriReferer = header.Referer;
Run Code Online (Sandbox Code Playgroud)
using Microsoft.AspNetCore.Server.Kestrel.Internal.Http;
var referer = ((FrameRequestHeaders)Request.Headers).HeaderReferer.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
几乎与没有魔法字符串的接受答案相同
小智 7
这是我如何获得网址引荐来源网址的方法:-
@{
string referer = Context.Request.Headers["Referer"].ToString();
Uri baseUri = new Uri(referer);}
<form asp-action="Login" asp-route-returnUrl="@baseUri.AbsolutePath">
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
39647 次 |
最近记录: |