C# WCF:没有名称为'';名称空间'';在信息中

C# WCF:没有名称为'';名称空间'';在信息中,c#,wcf,namespaces,C#,Wcf,Namespaces,错误:消息中没有名为“”且命名空间为“”的标头 我有一个WCF服务,它需要检索一些我想包含在头中的数据,但是我得到了上面关于名称空间的错误 我可以检查整个标题集,并在AllKeys部分(在VS中)下查看我的“SessionID”,但不理解它所期望的名称空间(如果有的话) 在JS中,我启动请求时没有明确的头: 在C#WCF服务中,这一行是我想要获取标题的地方 string session = OperationContext.Current.IncomingMessageHeaders.GetHe

错误:消息中没有名为“”且命名空间为“”的标头

我有一个WCF服务,它需要检索一些我想包含在头中的数据,但是我得到了上面关于名称空间的错误

我可以检查整个标题集,并在AllKeys部分(在VS中)下查看我的“SessionID”,但不理解它所期望的名称空间(如果有的话)

在JS中,我启动请求时没有明确的头:

在C#WCF服务中,这一行是我想要获取标题的地方

string session = OperationContext.Current.IncomingMessageHeaders.GetHeader<string>("SessionID", "??? WHAT GOES HERE ???");
string session=OperationContext.Current.IncomingMessageHeaders.GetHeader(“SessionID”,“这里是什么?”);

最后,我需要知道在我自己没有声明头的情况下它在哪个名称空间下,或者我如何声明它以便知道搜索什么。谢谢。

我还没有想出我原来的问题,但这让我得到了我想要的结果。希望这对别人有帮助

string SessionValue = WebOperationContext.Current.IncomingRequest.Headers.Get("SessionID");

通常,在实际获取标头之前,您需要测试标头是否存在,如下所示:

    private bool IsAuthorizedRequest()
    {
        var incomingMessageHeaders = OperationContext.Current.IncomingMessageHeaders;

        if (incomingMessageHeaders.FindHeader("Authorization", GlobalConstants.WcfNamespace) < 0)
            return false;

        string providedAuthorizationKey = incomingMessageHeaders.GetHeader<string>("Authorization", GlobalConstants.WcfNamespace);

        string actualAuthorizationKey = ConfigurationManager.AppSettings.Get("AuthorizationKey");

        return providedAuthorizationKey == actualAuthorizationKey;
    }
private bool IsAuthorizedRequest()
{
var incomingMessageHeaders=OperationContext.Current.incomingMessageHeaders;
if(incomingMessageHeaders.FindHeader(“授权”,GlobalConstants.WcfNamespace)<0)
返回false;
string providedAuthorizationKey=incomingMessageHeaders.GetHeader(“Authorization”,GlobalConstants.WcfNamespace);
字符串actualAuthorizationKey=ConfigurationManager.AppSettings.Get(“AuthorizationKey”);
返回providedAuthorizationKey==actualAuthorizationKey;
}

如果您不知道名称空间的名称,可以在标题中循环,如下所示:
    private bool IsAuthorizedRequest()
    {
        var incomingMessageHeaders = OperationContext.Current.IncomingMessageHeaders;

        if (incomingMessageHeaders.FindHeader("Authorization", GlobalConstants.WcfNamespace) < 0)
            return false;

        string providedAuthorizationKey = incomingMessageHeaders.GetHeader<string>("Authorization", GlobalConstants.WcfNamespace);

        string actualAuthorizationKey = ConfigurationManager.AppSettings.Get("AuthorizationKey");

        return providedAuthorizationKey == actualAuthorizationKey;
    }