2015-09-05 82 views
0

我有一个使用MVC4的Web应用程序,但现在已经意识到它确实应该是一个Web API,因此我将转移到ASP.NET 4.5.2 Web API 2项目。HttpRequest.UrlReferrer似乎不存在

的问题是,我在那里用Request.ServerVariables[]在我的MVC项目我已被告知,这不是在Web API“正确”的方式,因为这样,我应该使用Request.RequestUrl

的例子MSDN简直是

Uri MyUrl = Request.UrlReferrer; //kaboom for me 
Response.Write("Referrer URL Port: " + Server.HtmlEncode(MyUrl.Port.ToString()) + "<br>"); 
Response.Write("Referrer URL Protocol: " + Server.HtmlEncode(MyUrl.Scheme) + "<br>"); 

的问题是,尽管引用System.Web没有物业为RequestUrlReferrer - 唯一的属性是ContentHeadersMethodPropertiesRequestUriVersion。 为什么我不能按MSDN example使用Request.UrlReferrer

+0

可以链接请给MSDN示例,这样我们可以看到更多的上下文吗?你确定这是一个WebAPI的例子吗?请注意,Web API方法通常是* static *方法,而在MVC中,您会编写* instance *方法,因此可以访问实例属性...我怀疑Request只是一个实例属性。 –

回答

2

我怀疑你只需要得到以不同的方式在当前请求,因为在一个静态方法的,而不是在一个范围内,你可以参考一个Request实例属性:

var request = HttpContext.Current; 
var referrer = request.UrlReferrer; 
...