2010-08-07 68 views
0

我有一個Web服務,我使用相同的asmx擴展名轉換爲wcf服務。我有basicHttpbinding,因爲我的服務會談到像java,perl等各種客戶端。帶HttpContext的WCF服務

我有一個驗證,其中有HttpContext.Current。但我知道這在wcf服務中不起作用。我試圖使用RequestContext或OperationContext,但我無法這樣做。我試圖用

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]

,但沒有幫助。我從soapUI呼叫我的服務進行測試。

回答

1

好吧,所以我找到了解決方案。有很多方法可以獲取HttpContext.Current上下文。或者我們可以使用OperationContext,或者我們可以使用設置爲Allowed的AspNetCompatibilityRequirements模式,並在web.config中將aspNetCompatibilityEnabled設置爲true。

對於我的情況,我已經將asmx服務轉換爲wcf服務,我還必須修改HttpHandler處理程序以刪除並向System.ServiceModel.Activation.HttpHandler添加asmx路徑。

1

您最好在使用WCF服務時使用OperationContext。 正如你將始終得到的HttpContext.Current.Items始終是空的,只能在ASP.NET中運行。 因此,添加以下代碼: -

OperationContext.Current.Extensions.Add(extension);