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