这是我的代码行,它会在HttpConext.Current
string postData = "username=" + HttpContext.Current.Server.UrlEncode(USERNAME);
答案 0 :(得分:22)
这是正常的。 WCF Web服务中没有HTTP上下文。 WCF服务甚至可能不在Web服务器中托管。您可以在控制台应用程序内托管。有一个技巧可以让你设置ASP.NET Compatibility Mode:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
但这不是我建议你做的事情。
我会这样做:
var postData = "username=" + HttpUtility.UrlEncode(USERNAME);
因为我对使用此代码的位置(将其作为HTTP请求发送到远程Web服务器)有第7感觉,让我们直截了当地说:
using (var client = new WebClient())
{
var values = new NameValueCollection
{
{ "username", USERNAME }
};
var result = client.UploadValues("http://foo.com", values);
}
答案 1 :(得分:7)
如果要启用HttpContext,可以在Web配置中设置aspNetCompatibilityEnabled
标志。
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>