在.net问题

时间:2018-03-09 10:39:07

标签: .net authentication soap

我正在尝试将身份验证添加到我一直在使用的网络服务,直到现在都没有问题,但似乎有问题。我认为凭据正在验证,但是获取“不期望XXX类型。使用XmlInclude或SoapInclude属性指定静态未知的类型。”

在我正在使用的SoapExtension类中:

public class AuthHeaderExtension : SoapExtension
{
    public override void ProcessMessage(SoapMessage message)
    {
        switch (message.Stage)
        {
            case SoapMessageStage.BeforeSerialize:
                if (message is SoapClientMessage)
                {
                    AddAuthHeader(message);
                }
                break;
            case SoapMessageStage.AfterSerialize:
                break;
            case SoapMessageStage.BeforeDeserialize:
                break;
            case SoapMessageStage.AfterDeserialize:
                break;
        }
    }
    private void AddAuthHeader(SoapMessage message)
    {
        var clientId = "xxx";
        var password = "yyy";

        var authheader = new AuthHeader
        {
            ClientID = clientId,
            Password = password
        };
        message.Headers.Add(authheader);
    }

    public override object GetInitializer(Type serviceType)
    {
        return null;
    }

    public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)
    {
        return null;
    }

    public override void Initialize(object initializer)
    {
        return;
    }
}
[AttributeUsage(AttributeTargets.Method)]
public class AuthHeaderExtensionAttribute : SoapExtensionAttribute
{
    public override Type ExtensionType
    {
        get { return typeof(AuthHeaderExtension); }
    }


    public override int Priority
    {
        get
        {
            return 100;
        }
        set
        {

        }
    }
}

我只是使用

在引用本身的每个请求开始时调用它
[AuthHeaderExtension]

有关无效凭据的错误已停止,但我收到了上述错误。我之前已经以这种方式添加了自定义SOAP标头,但从未使用凭据进行身份验证。

这里有一堆关于该错误消息的页面,但似乎与同一问题无关。任何帮助都会受到赞赏吗?

干杯

1 个答案:

答案 0 :(得分:0)

已解决,将以下内容添加到参考文献中。

[System.Xml.Serialization.SoapIncludeAttribute(typeof(AuthHeader))]