WCF服务中的HttpContext为null?

时间:2011-03-04 14:09:56

标签: c# wcf

这是我的代码行,它会在HttpConext.Current

上引发错误
string postData = "username=" + HttpContext.Current.Server.UrlEncode(USERNAME);

2 个答案:

答案 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>