我正在尝试将身份验证添加到我一直在使用的网络服务,直到现在都没有问题,但似乎有问题。我认为凭据正在验证,但是获取“不期望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标头,但从未使用凭据进行身份验证。
这里有一堆关于该错误消息的页面,但似乎与同一问题无关。任何帮助都会受到赞赏吗?
干杯
答案 0 :(得分:0)
已解决,将以下内容添加到参考文献中。
[System.Xml.Serialization.SoapIncludeAttribute(typeof(AuthHeader))]