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);
}
HttpContext
を使用したい場合は、コードがすでにそのように記述されているためです。これを、サービスが存在するweb.configに追加する必要があります。
<configuration>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
</configuration>
件名の Microsoftのページ の1つから。
HttpContext:WCFサービス内からアクセスした場合、Currentは常にnullです。代わりにRequestContextを使用してください。
ヘッダーを読み取るには、以下を使用して修正してください
var headers = OperationContext.Current.IncomingMessageProperties["httpRequest"];
var apiToken = ((HttpRequestMessageProperty)headers).Headers["apiKey"];
Webサービスからアクセスした場合、HttpContext.Currentはnullです。代わりにHttpRuntime.Cacheを使用してください。