开发者

Why am I not getting the soap header?

开发者 https://www.devze.com 2023-01-18 14:47 出处:网络
Why is this so hard in WCF 4.0 I add a custom header in my client Authorization: 18732818 gfdsgShoyh3sfayql6jWCRc=

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

Con开发者_JAVA百科nection: 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?


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);
0

精彩评论

暂无评论...
验证码 换一张
取 消