Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF AfterReceiveRequest获取标题_Wcf_Idispatchmessageinspector - Fatal编程技术网

WCF AfterReceiveRequest获取标题

WCF AfterReceiveRequest获取标题,wcf,idispatchmessageinspector,Wcf,Idispatchmessageinspector,我刚刚开始拦截对我的WCF服务的请求 我使用如下java代码调用web服务(简短版本) 我正在接收请求,但无法获取/找到消息请求中的标题。我试过这样的方法: public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel, System.ServiceModel.InstanceContext instanc

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

我使用如下java代码调用web服务(简短版本)

我正在接收请求,但无法获取/找到消息请求中的标题。我试过这样的方法:

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方面也做错了吗?

类中的
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;
    }
    public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
    {
        var prop = (HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name];
        var userName = prop.Headers["Username"];

        return null;
    }