2011-12-23 23 views
0

我注意到当我使用简单的资源(下面列出)时,我能够通过引用“WebOperationContext.Current.IncomingRequest.Accept”来获得Accept头,但符合我需要遍历所有提供的Accept头名称的规范,尽管看起来WCF只返回它找到的第一个。.net 4中是否支持重复的http头名称?

[WebGet(UriTemplate = "system", ResponseFormat = WebMessageFormat.Json)] 

如果我把所有的头名称值放到一个字符串中并用逗号分开,它就可以工作。但这不是我在这里谈论的问题。

虽然http://www.faqs.org/rfcs/rfc2616.html第4.2节指出只要它们的值可以用逗号连接并且仍然是正确的语法(它可以),那么允许多个标头名称是允许的。

所以对我来说这很不好受。我错过了什么吗?

回答

0

我还没有测试过这个,但你有没有试过WebOperationContext.Current.IncomingRequest.Headers["Accept"]

我知道,如果您为相同的头文件调用WebHeaderCollection.Add多次,它将在适当的位置用逗号连接它们。但理论上可能是因为IncomingWebRequestContext分别存储了第一个Accept头,因为它只是一个便捷属性,并且只能用于只有一个Accept头的常见情况。

+0

谢谢你的回复杰拉尔德。当我肯定的时候,我通过WebOperationContext.Current.IncomingRequest.Headers进行迭代,发现有重复的Accept名称通过,并且集合中只有一个Accept。但对于你的问题,我还没有明确检查[“接受”]。 – Blackey 2011-12-23 06:59:01

+0

再次感谢,似乎'WebOperationContext.Current.IncomingRequest.Headers.GetValues(“Accept”);'工作正常。 – Blackey 2012-01-16 22:14:28