HttpContext.Current является нулевым в моем веб-сервисе - PullRequest
19 голосов
/ 23 января 2012

У меня есть веб-сервис (.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);
}

Ответы [ 4 ]

46 голосов
/ 23 января 2012

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

<configuration>
    <system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    </system.serviceModel>
</configuration>
15 голосов
/ 23 января 2012

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

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

1 голос
/ 05 октября 2016

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

 var headers = OperationContext.Current.IncomingMessageProperties["httpRequest"];
                var apiToken = ((HttpRequestMessageProperty)headers).Headers["apiKey"];
0 голосов
/ 30 декабря 2013

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

...