web-dev-qa-db-ja.com

WebサービスでHttpContext.Currentがnullです

Webサービス(.svc)があり、StackOverflowの他の場所にあるコードを使用してSOAPリクエストをキャプチャしようとしています。

問題はそれです HttpContext.Currentはnullなので、アクセスできませんRequest.InputString

なぜこれがnullであり、どのように解決できるのですか?

XmlDocument xmlSoapRequest = new XmlDocument();

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

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

HttpContextを使用したい場合は、コードがすでにそのように記述されているためです。これを、サービスが存在するweb.configに追加する必要があります。

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

件名の Microsoftのページ の1つから。

HttpContext:WCFサービス内からアクセスした場合、Currentは常にnullです。代わりにRequestContextを使用してください。

15

ヘッダーを読み取るには、以下を使用して修正してください

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

Webサービスからアクセスした場合、HttpContext.Currentはnullです。代わりにHttpRuntime.Cacheを使用してください。

0
CAK2