我有一个 MVC WebAPI 2 项目Controllers
控制器。我试图调用的方法是POST
(创造)。我需要访问调用该方法的引用 URL,无论我访问哪个对象,引用 URL 要么不存在于对象中,要么为空。
例如,我添加了HTTPContext
参考和以下返回null
:
var thingythingthing = HttpContext.Current.Request.UrlReferrer;
The Request
对象没有UrlReferrer
财产。
这也返回 null:
HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]
我无法修改标头,因为我需要能够生成方法的链接并按调用来源过滤访问。
我应该查看任何特定的地方,或者,为什么这些返回 null 的任何特定原因?
编辑:我有一个 GET 方法的解决方案(HttpContext.Current.Request.RequestContext.HttpContext.Request.UrlReferrer
) 但不适用于 POST 方法。
See 这个答案 https://stackoverflow.com/a/32450093/1100441。基本上,WebAPI 请求使用不同类型的请求对象。您可以创建一个扩展方法来提供UrlReferrer
不过对于你来说。从链接的答案:
首先,你可以扩展HttpRequestMessage
提供一个UrlReferrer()
method:
public static string UrlReferrer(this HttpRequestMessage request)
{
return request.Headers.Referrer == null ? "unknown" : request.Headers.Referrer.AbsoluteUri;
}
然后您的客户需要设置Referrer Header
给他们的API Request
:
// Microsoft.AspNet.WebApi.Client
client.DefaultRequestHeaders.Referrer = new Uri(url);
现在Web API Request
包括您可以像这样从您的Web API
:
Request.UrlReferrer();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)