2010-10-01 63 views
-1

为什么在WCF会这样艰难4.0为什么我没有收到肥皂头?

我在客户端添加自定义标题

授权:18732818 gfdsgShoyh3sfayql6jWCRc =

让我的头看起来像下面

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

授权:18732818 gfdsgShoyh3sfayql6jWCRc =

主机:主机名

连接:保持活动

在我的有线服务响应我可以访问属性ID并获得价值1。我也想访问该值授权,但它总是显示为空。

我在做什么错?

+1

你宁愿没有必要理会在WCF连接最多的行为? – 2010-10-01 14:35:49

+1

这似乎是一个相当愤怒的问题,但它并不包含许多细节,这些细节将帮助我们理解您要做的事情。我们不能排除你想做的事情,除非你至少让我们知道你怎么做* – Gareth 2010-10-01 14:37:24

+0

这将是一个HTTP头 - **不是** SOAP头......难怪我的答案不适合你。在制定问题时你应该更加精确,而不是惩罚那些试图帮助你的人.... – 2010-10-03 07:35:37

回答

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