HttpContext.Current является нулевым в моем веб-сервисе

У меня есть веб-сервис (.svc), и я пытаюсь перехватить SOAP-запрос, используя фрагмент кода, найденный в другом месте в Stackru.

Проблема в том, что HttpContext.Current является нулевым, поэтому я не могу получить доступ Request.InputString,

Почему это ноль, и как это можно решить?

XmlDocument xmlSoapRequest = new XmlDocument();

Stream receiveStream = HttpContext.Current.Request.InputStream;
receiveStream.Position = 0;

using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
{
    xmlSoapRequest.Load(readStream);
}

4 ответа

Решение

Если вы хотите использовать HttpContext потому что код уже написан так; вам нужно добавить это в ваш web.config, где находится ваша служба:

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

С одной из страниц Microsoft на эту тему.

HttpContext: Current всегда имеет значение null при доступе из службы WCF. Вместо этого используйте RequestContext.

Исправьте еще, используйте ниже, чтобы прочитать заголовок

 var headers = OperationContext.Current.IncomingMessageProperties["httpRequest"];
                var apiToken = ((HttpRequestMessageProperty)headers).Headers["apiKey"];

HttpContext.Current имеет значение null при доступе из веб-службы. Вместо этого используйте HttpRuntime.Cache.

Посмотрите, пожалуйста, как получить рабочий путь приложения wcf? использование System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath

Другие вопросы по тегам