【发布时间】:2019-12-26 16:11:58
【问题描述】:
我正在尝试向 Amadeus Enterprise WSAP 发送 SOAP 请求。他们几乎没有提供有关如何连接的文档,我遵循了他们的代码示例
class SecurityTokenInspector : IClientMessageInspector
{
.....
public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel)
{
if (channel.State == CommunicationState.Closed)
{
UsernameToken token = new UsernameTokenBP10(this.username, this.password, PasswordOption.SendHashed);
XmlElement securityToken = token.GetXml(new XmlDocument());
MessageHeader securityHeader = MessageHeader.CreateHeader("Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", securityToken, false);
request.Headers.Add(securityHeader);
}
return null;
}
.....
}
这里是使用:
AmadeusWebServicesPTClient client = new AmadeusWebServicesPTClient("AmadeusWebServicesPort");
SecurityTokenInspector iSecurity = new SecurityTokenInspector(ConfigurationManager.AppSettings["user"], ConfigurationManager.AppSettings["pass"]);
SecurityBehavior behavior = new SecurityBehavior
{
inspector = iSecurity
};
client.Endpoint.Behaviors.Add(behavior);
但未调用 BeforeSendRequest。
谁能帮忙?
【问题讨论】:
-
所以你确实调用了
client.ServiceMethod,对吧?因为仅仅添加行为不会调用任何东西。