WCF Webサービスでは、HTTP/HTTPSリクエストヘッダーをどのように読み取るのですか?この場合、クライアントが使用した元のURLホストを特定しようとしています。これは、ロードバランサーのX-Forwarded-Hostヘッダーにあるか、ダイレクトボックスの場合はHostヘッダーにある可能性があります。
私はもう試した OperationContext.Current.IncomingMessageHeaders.FindHeader
しかし、これはHTTPヘッダーではなくSOAPヘッダーを見ていると思います。
では、HTTPヘッダーの読み方は?確かにこれは単純な質問であり、明らかな何かを見逃しています。
編集-@sinfereの答えは、私が必要としていたものとほぼ正確でした。完全を期すために、ここで私がやったことは次のとおりです。
IncomingWebRequestContext request = WebOperationContext.Current.IncomingRequest;
WebHeaderCollection headers = request.Headers;
string Host = null;
if (headers["X-Forwarded-Host"] != null)
Host = headers["X-Forwarded-Host"];
else if (headers["Host"] != null)
Host = headers["Host"];
else
Host = defaulthost; // set from a config value
WebOperationContext.Current.IncomingRequest.Headers
すべてのヘッダーを表示するには、次のコードを使用します。
IncomingWebRequestContext request = WebOperationContext.Current.IncomingRequest;
WebHeaderCollection headers = request.Headers;
Console.WriteLine("-------------------------------------------------------");
Console.WriteLine(request.Method + " " + request.UriTemplateMatch.RequestUri.AbsolutePath);
foreach (string headerName in headers.AllKeys)
{
Console.WriteLine(headerName + ": " + headers[headerName]);
}
Console.WriteLine("-------------------------------------------------------");
これは、Azure WCF Webサービスの1つでそれらを読み取る方法です。
IncomingWebRequestContext woc = WebOperationContext.Current.IncomingRequest;
string applicationheader = woc.Headers["HeaderName"];