2011-03-04 100 views
14

這裏是我的代碼行,並拋出了我的錯誤就HttpConext.CurrentWCF服務中的HttpContext null?

string postData = "username=" + HttpContext.Current.Server.UrlEncode(USERNAME); 
+0

此代碼位於何處?在WCF服務數據合同中? – 2011-03-04 14:13:03

+0

將代碼放置在wcf service.svc.cs中 – 2011-03-04 14:17:09

回答

21

這是正常的。 WCF Web服務中沒有HTTP上下文。 WCF服務甚至可能不在Web服務器中託管。您可以在控制檯應用程序中進行託管。有一個竅門,可以讓你設置ASP.NET Compatibility Mode

<system.serviceModel>   
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />  
</system.serviceModel> 

但它不是東西,我會建議你做的事情。

我會做這個:

var postData = "username=" + HttpUtility.UrlEncode(USERNAME); 

而且因爲我有你在哪裏與此代碼去第7感(它發送一個HTTP請求發送到遠程服務器上),讓我們直接去了點:

using (var client = new WebClient()) 
{ 
    var values = new NameValueCollection 
    { 
     { "username", USERNAME } 
    }; 
    var result = client.UploadValues("http://foo.com", values); 
} 
+0

我在本地機器上測試此服務是否沒有辦法? – 2011-03-04 14:13:31

+1

@Abu Hamzah,沒關係,請WCF服務裏面沒有HttpContext。 – 2011-03-04 14:16:09

+0

+1提醒,wcf並不總是在網絡服務器上 – Michel 2011-03-04 14:35:45

6

如果要啓用的HttpContext可以設置在web配置的aspNetCompatibilityEnabled標誌。

<system.serviceModel>   
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />  
</system.serviceModel>