web-dev-qa-db-ja.com

WCF WebサービスでHTTPリクエストヘッダーを読み取る方法は?

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
37
b w

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("-------------------------------------------------------");
47
sinfere

これは、Azure WCF Webサービスの1つでそれらを読み取る方法です。

IncomingWebRequestContext woc = WebOperationContext.Current.IncomingRequest;

string applicationheader = woc.Headers["HeaderName"];
24
Slack Shot