从WCF服务访问HTTP标头

时间:2011-07-25 16:37:01

标签: wcf webhttpbinding

我需要访问要从WCF服务返回到客户端的HTTP响应头。访问HTTPContext很容易(通过HttpContext.Current.Response),但是当StatusCode已经设置时(例如,如果状态是500),最后执行的事件/扩展/行为是什么?

编辑:消息检查员在这里似乎不是一个好的解决方案,因为在他们运行时,状态代码尚未设置。 (至少在我的审判中就是这种情况)

2 个答案:

答案 0 :(得分:0)

  1. 控制Headers的最简单方法是使用Message contract。

  2. 在服务端收到消息后立即使用Message Inspectors监控消息。

  3. 在极端情况下,如果您对任何其他标准路由不满意,可以使用POX(Plain Old XML)类型的操作来处理原始XML消息。

答案 1 :(得分:0)

您可以访问WebOperationContext.Current.IncomingRequest上的所有标题,如下所示:

IncomingWebRequestContext request = WebOperationContext.Current.IncomingRequest;
WebHeaderCollection headers = request.Headers;

Console.WriteLine("-------------------------------------------------------");    
foreach (string headerName in headers.AllKeys)
{
  Console.WriteLine(headerName + ": " + headers[headerName]);
}
Console.WriteLine("-------------------------------------------------------");

请参阅here