【问题标题】:WCF AfterReceiveRequest get headersWCF AfterReceiveRequest 获取标头
【发布时间】:2013-09-23 14:16:33
【问题描述】:

我刚刚开始拦截对我的 WCF 服务的请求。

我正在使用如下所示的 java 代码调用 Web 服务(短版)

connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Username", "Testname");

我正在接收请求,但无法获取/查找消息请求中的标头。我尝试过这样的事情:

public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel, System.ServiceModel.InstanceContext instanceContext)
{
    int headerIndex = request.Headers.FindHeader("Username", string.Empty);
    var username = request.Headers["Username"]

    return null;
}

但我总是以 -1 或异常结束。这样做的正确方法是什么?我在 Java 方面也做错了吗?

【问题讨论】:

    标签: wcf idispatchmessageinspector


    【解决方案1】:

    Message 类中的 Headers 属性将为您提供 SOAP 标头;您正在寻找的是 HTTP 标头。要获得这些,您应该使用HttpRequestMessageProperty

        public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
        {
            var prop = (HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name];
            var userName = prop.Headers["Username"];
    
            return null;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 2015-10-29
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多