Met*_*nix 5 c# controller httpcontext asp.net-mvc-4 asp.net-web-api2
我有一个带有Controllers
控制器的 MVC WebAPI 2 项目。我试图调用的方法是POST
(创建)。我需要访问调用该方法的引用 URL,无论我访问什么对象,引用 URL 要么不存在于对象中,要么为空。
例如,我添加了HTTPContext
引用并返回以下内容null
:
var thingythingthing = HttpContext.Current.Request.UrlReferrer;
Run Code Online (Sandbox Code Playgroud)
该Request
对象不具有UrlReferrer
财产。
这也返回 null:
HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]
Run Code Online (Sandbox Code Playgroud)
我无法修改标头,因为我需要能够生成指向该方法的链接并按调用来源过滤访问。
我应该查看的任何特定地方,或者,为什么这些返回 null 的任何特定原因?
编辑:我有一个针对 GET 方法 ( HttpContext.Current.Request.RequestContext.HttpContext.Request.UrlReferrer
)的解决方案,但没有针对 POST 方法的解决方案。
看到这个答案。基本上,WebAPI 请求使用不同类型的请求对象。不过,您可以创建一个UrlReferrer
为您提供 的扩展方法。从链接的答案:
首先,您可以扩展HttpRequestMessage
以提供一个UrlReferrer()
方法:
public static string UrlReferrer(this HttpRequestMessage request)
{
return request.Headers.Referrer == null ? "unknown" : request.Headers.Referrer.AbsoluteUri;
}
Run Code Online (Sandbox Code Playgroud)
然后您的客户需要将 设置Referrer Header
为他们的API Request
:
// Microsoft.AspNet.WebApi.Client
client.DefaultRequestHeaders.Referrer = new Uri(url);
Run Code Online (Sandbox Code Playgroud)
现在Web API Request
包括引用数据,您可以像这样从您的Web API
:
Request.UrlReferrer();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8052 次 |
最近记录: |