Dav*_*ans 6 wcf httpcontext wcf-rest
我正在使用WCF REST stater工具包来构建一个简单的xml over HTTP服务.作为这个Im的一部分,我使用RequestInterceptor进行身份验证.在RequestInterceptor内部,我可以访问System.ServiceModel.Channels.RequestContext对象,从中可以获取请求url,querystring params和其他有用的东西.我无法解决的是如何访问请求的HttpContext.我有几个东西存储在HttpContext中,我想在requestInterceptor中访问但是我很难找到它们.当我在Visual Studio中使用quickwatch时,我可以看到它隐藏在requestContext的私有成员中.有人可以告诉我如何访问HttpContext,也许使用RequestContext对象上的反射?
只要打开兼容性,就可以在ASP.NET中托管的任何WCF服务中访问ASP.NET的HttpContext.这分两步完成:
确保通过配置以下内容来启用兼容性:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled=”true” />
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)完成后,您可以使用静态Current属性随时访问当前的HttpContext实例.例如:
foreach(HttpCookie cookie in HttpContext.Current.Request.Cookies)
{
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
请注意,启用与ASP.NET运行时的集成确实会为每个请求带来一些额外的开销,因此如果您不需要它,则可以通过不启用它而仅使用System.ServiceModel.Web运行时来节省一些性能.您可以使用HttpRequestResponseMessageProperty和HttpResponseMessageProperty类访问所需的所有信息.
有关该主题的更多信息,请参阅MSDN标题为WCF和ASP.NET的此部分.
| 归档时间: |
|
| 查看次数: |
3669 次 |
| 最近记录: |