我使用WCF REST stater kit來構建純粹的xml over HTTP服務。作爲使用RequestInterceptor進行身份驗證的Im的一部分。在RequestInterceptor內部,我可以訪問一個System.ServiceModel.Channels.RequestContext對象,從中我可以獲取請求URL,查詢字符串參數和其他有用的東西。我無法解決的是如何訪問請求的HttpContext。我有幾件事情存儲在HttpContext中,我想在requestInterceptor內部訪問,但是Im正努力去找它們。當我在Visual Studio中使用quickwatch時,可以看到它隱藏在requestContext的私有成員內部。有人可以告訴我如何訪問HttpContext,也許使用對RequestContext對象的反射?在WCF RequestInterceptor內部訪問HttpContext
6
A
回答
9
只要打開兼容性,就可以在ASP.NET中託管的任何WCF服務中訪問ASP.NET的HttpContext。這兩個步驟完成:
- 應用AspNetCompatibilityRequirementsAttribute到服務類,並設置RequirementsMode屬性爲必需
確保您啓用兼容通過配置如下:
<system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled=」true」 /> </system.serviceModel>
完成之後,您可以隨時使用the static Current property訪問當前的HttpContext實例。例如:
foreach(HttpCookie cookie in HttpContext.Current.Request.Cookies)
{
/* ... */
}
注意,啓用與ASP.NET運行時集成並承擔一些額外的開銷爲每個請求,所以如果你不需要它,你可以通過不啓用它,只是用節省一些性能改爲System.ServiceModel.Web運行時。您可以使用HttpRequestResponseMessageProperty和HttpResponseMessageProperty類獲得幾乎所有您需要的信息。請參閱this section of MSDN titled WCF and ASP.NET。
相關問題
- 1. 在WCF中訪問HttpContext RequestInterceptor ProcessRequest方法
- 2. WCF REST RequestInterceptor身份驗證
- 3. 從外部庫併發訪問HttpContext
- 4. 訪問的HttpContext在C#類
- 5. 在app.UseStatusCodePages中訪問HttpContext
- 6. WCF中的HttpContext
- 7. asp.net mvc httpcontext訪問選項
- 8. 從HttpActionContext訪問當前HttpContext
- 9. WCF REST StarterKit和RequestInterceptor線程安全
- 10. RequestInterceptor中的ProcessRequest永不結束[WCF]
- 11. 使用的HttpContext在數據訪問層
- 12. 內部類訪問
- 13. WCF 4.0的模擬WCF REST入門套件的RequestInterceptor?
- 14. WCF服務中的HttpContext null?
- 15. 帶HttpContext的WCF服務
- 16. 處理T4模板時訪問HttpContext
- 17. 從請求範圍類訪問HttpContext
- 18. WCF服務客戶端訪問內部構件
- 19. 限制對內部WCF服務的訪問
- 20. 訪問xrange內部結構
- 21. 內部訪問修飾符
- 22. 訪問內部的ArrayList
- 23. 訪問內部字段[WebClient]
- 24. 訪問函數內部CDATA
- 25. 訪問內部html標記
- 26. HttpContext IP問題
- 27. 訪問內部類型
- 28. 訪問內部微服務
- 29. 的iOS - 訪問內部塊
- 30. 訪問內部文件VB.NET
我已經有了上面提到的所有東西。我能夠訪問正常的OperationContract方法內部但在一個requestInterceptor內的HttpContext(http://weblogs.asp.net/gsusx/archive/2008/11/26/extending-restful-services-with-a-custom-request -interceptor.aspx?CommentPosted =真#commentmessage) – 2009-10-28 14:34:46