Подтвердить что ты не робот

HttpContext.Current имеет значение null в моей веб-службе

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

Проблема в том, что HttpContext.Current имеет значение null, поэтому я не могу получить доступ к 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);
}
4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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