HttpContext null в службе WCF?

вот моя строка кода, и это вызывает ошибку на HttpConext.Current

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

Ответы

Ответ 1

Это нормально. Контекст HTTP в веб-службе WCF отсутствует. Служба WCF может даже не размещаться внутри веб-сервера. Вы можете разместить внутри консольного приложения. Там есть трюк, который позволяет вам установить Режим совместимости ASP.NET:

<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);
}

Ответ 2

Если вы хотите включить HttpContext, вы можете установить флаг aspNetCompatibilityEnabled в веб-конфигурации.

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