HttpContext null в службе WCF? - PullRequest
       0

HttpContext null в службе WCF?

15 голосов
/ 04 марта 2011

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

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

Ответы [ 2 ]

22 голосов
/ 04 марта 2011

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

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

но я бы не советовал вам это делать.

Я бы сделал это вместо:

var postData = "username=" + HttpUtility.UrlEncode(USERNAME);

И поскольку у меня есть седьмое представление о том, куда вы идете с этим кодом (отправка его в виде HTTP-запроса на удаленный веб-сервер), давайте перейдем непосредственно к вопросу:

using (var client = new WebClient())
{
    var values = new NameValueCollection
    {
        { "username", USERNAME }
    };
    var result = client.UploadValues("http://foo.com", values);
}
7 голосов
/ 04 марта 2011

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

<system.serviceModel>        
 <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />    
</system.serviceModel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...