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);
}
Ответы
Ответ 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"];
Ответ 4
См. Как получить рабочий путь приложения wcf?
Используйте System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath