How to read HTTP request headers in a WCF web service?

匿名 (未验证) 提交于 2019-12-03 01:52:01

问题:

In a WCF web service, how does one read an HTTP/HTTPS request header? In this case, i'm trying to determine the original URL host the client used. This might be in the X-Forwarded-Host header from a load balancer, or in the Host header if it's direct-box.

I've tried OperationContext.Current.IncomingMessageHeaders.FindHeader but i think this is looking at SOAP headers rather than HTTP headers.

So, how to read HTTP headers? Surely this is a simple question and i'm missing something obvious.

EDIT - @sinfere's answer was almost exactly what i needed. For completeness, here's what i ended up with:

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:

try WebOperationContext.Current.IncomingRequest.Headers

I use following codes to see all 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:

This is how I read them in one of my Azure WCF web services.

IncomingWebRequestContext woc = WebOperationContext.Current.IncomingRequest;  string applicationheader = woc.Headers["HeaderName"]; 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!