2011-03-04 96 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>