這裏是我的代碼行,並拋出了我的錯誤就HttpConext.Current
WCF服務中的HttpContext null?
string postData = "username=" + HttpContext.Current.Server.UrlEncode(USERNAME);
這裏是我的代碼行,並拋出了我的錯誤就HttpConext.Current
WCF服務中的HttpContext null?
string postData = "username=" + HttpContext.Current.Server.UrlEncode(USERNAME);
這是正常的。 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);
}
我在本地機器上測試此服務是否沒有辦法? – 2011-03-04 14:13:31
@Abu Hamzah,沒關係,請WCF服務裏面沒有HttpContext。 – 2011-03-04 14:16:09
+1提醒,wcf並不總是在網絡服務器上 – Michel 2011-03-04 14:35:45
如果要啓用的HttpContext可以設置在web配置的aspNetCompatibilityEnabled
標誌。
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
此代碼位於何處?在WCF服務數據合同中? – 2011-03-04 14:13:03
將代碼放置在wcf service.svc.cs中 – 2011-03-04 14:17:09