Подтвердить что ты не робот

Как читать заголовки 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
4b9b3361

Ответ 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"];