为什么在WCF 4.0中这么难?
我在客户端添加自定义标题
授权:18732818 gfdsgShoyh3sfayql6jWCRc =
以便我的标题如下所示
获取http://HOSTNAME/Public/Xml/SyncReply/TestClearUsername?Id=1 HTTP / 1.1
授权:18732818 gfdsgShoyh3sfayql6jWCRc =
主持人:HOSTNAME
连接:Keep-Alive
在我的有线服务响应器中,我可以访问属性Id并获取值1.我还想访问值Authorization,但它总是显示为null。
我做错了什么?
答案 0 :(得分:0)
经过大量的谷歌搜索后,我终于找到了答案,所以我会在这里发布,以便它可能对其他人有用。我假设这是一个没有记录的功能,因为它是如此隐蔽,但其他人可能知道不同。
我发现此枚举System.Web.HttpWorkerRequest.HeaderAuthorization
(值= 24)
和此方法System.Web.HttpWorkerRequest.GetKnownRequestHeader(24)
总结一下授权隐藏的原因是它是一个保留的标头值。如果您添加一个随机单词并想要检索,则可以使用。
.GetUnknownRequestHeader("YOUR_WORD_HERE").
所以你需要
HttpRequestContext hrc = (HttpRequestContext)this.RequestContext;
RequestAttributes ra = (RequestAttributes)hrc.RequestAttributes;
System.Web.HttpWorkerRequest hwr = ra.HttpWorkerRequest;
string Auth = hwr.GetKnownRequestHeader(System.Web.HttpWorkerRequest.HeaderAuthorization);