【发布时间】:2013-03-21 01:16:35
【问题描述】:
ASP.NET 中的这些类之间有什么区别?我发现这些类之间没有继承关系。
下面的代码返回一个HttpRequestWrapper的实例is aHttpRequestBase和has aHttpRequest
HttpRequestMessage request = ...;
HttpRequestBase reqBase = (request.Properties["MS_HttpContext"] as HttpContextWrapper).Request;
// do somthing with reqBase.Cookies
微软似乎想在从 HttpRequestMessage 获取 cookie 时惹恼我们。
是否保证request.Properties["MS_HttpContext"] 永远不会为空?
或者认为ajax请求是在ApiController的一个action中处理的。我可以通过两种不同的方式访问客户端的 IP。
var ip = (request.Properties["MS_HttpContext"] as HttpContextWrapper).Request.UserHostAddress
var ip = HttpContext.Current.Request.UserHostAddress
这两者有什么区别?
或者一般来说,我可以以不同的方式访问相同的请求/响应数据,例如 Cookie、标头、请求者信息等。什么时候用哪个?我们可以说“如果是ajax请求,由于缺少某些东西,因此无法保证HttpRequest正常工作,因此对于ajax请求,我们应该改用HttpRequestMessage”?
【问题讨论】:
标签: c# asp.net asp.net-mvc httprequest