【问题标题】:Accessing the HTTP headers from a WCF Service从 WCF 服务访问 HTTP 标头
【发布时间】:2011-07-25 16:37:00
【问题描述】:

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

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

【问题讨论】:

    标签: wcf webhttpbinding


    【解决方案1】:

    您可以访问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

    【讨论】:

      【解决方案2】:
      1. 控制标头的最简单方法是使用消息协定。

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

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

        李>

      【讨论】:

      • 感谢消息检查器提示,我的问题是调用消息检查器时可能未设置 HTTP 状态代码。 (我认为它永远不会设置,因为它是在消息检查器运行后设置的)
      猜你喜欢
      • 1970-01-01
      • 2017-05-10
      • 2019-10-26
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-13
      相关资源
      最近更新 更多