tags:

views:

67

answers:

1

Why is this so hard in WCF 4.0

I add a custom header in my client

Authorization: 18732818 gfdsgShoyh3sfayql6jWCRc=

so that my header looks like the following

GET http://HOSTNAME/Public/Xml/SyncReply/TestClearUsername?Id=1 HTTP/1.1

Authorization: 18732818 gfdsgShoyh3sfayql6jWCRc=

Host: HOSTNAME

Connection: Keep-Alive

in my wired up service responder I can access the property Id and get the value 1. I would also like to access the value Authorization, but it always shows as null.

What am I doing wrong?

A: 

After much googling I finally found the answer to this so I will post it here so it might be of use to someone else. I am assuming this is an undocumented feature, since it is so well hidden, but someone else might know different.

I found this enumeration System.Web.HttpWorkerRequest.HeaderAuthorization (value=24)

and this method System.Web.HttpWorkerRequest.GetKnownRequestHeader(24)

Just to summarize the reason Authorization was hiding from me was that its a reserved header value. if you add a random word and want to retrieve you can use.

.GetUnknownRequestHeader("YOUR_WORD_HERE").

so in full you need

HttpRequestContext hrc = (HttpRequestContext)this.RequestContext;

RequestAttributes ra = (RequestAttributes)hrc.RequestAttributes;

System.Web.HttpWorkerRequest hwr = ra.HttpWorkerRequest;

string Auth = hwr.GetKnownRequestHeader(System.Web.HttpWorkerRequest.HeaderAuthorization);
LepardUK