Как читать заголовки HTTP-запросов в веб-службе WCF?
В веб-службе WCF, как вы читаете заголовок запроса HTTP/HTTPS? В этом случае я пытаюсь определить исходный URL-адрес хоста, используемого клиентом. Это может быть в заголовке X-Forwarded-Host из балансировщика нагрузки или в заголовке хоста, если это direct-box.
Я пробовал OperationContext.Current.IncomingMessageHeaders.FindHeader
, но я думаю, что это относится к заголовкам SOAP, а не к HTTP-заголовкам.
Итак, как читать заголовки HTTP? Наверняка, это простой вопрос, и я пропускаю что-то очевидное.
EDIT - ответ @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
Ответы
Ответ 1
попробуйте 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("-------------------------------------------------------");
Ответ 2
Вот как я читаю их в одной из моих веб-служб Azure WCF.
IncomingWebRequestContext woc = WebOperationContext.Current.IncomingRequest;
string applicationheader = woc.Headers["HeaderName"];