我使用soap服务创建控制台应用程序并实现自定义绑定以修改传入和传出消息。
我创建服务
public SoapService()
{
Uri uri = new Uri(ConfigurationManager.AppSettings["SoapUri"]);
host = new ServiceHost(this, uri);
HttpTransportBindingElement transport = new HttpTransportBindingElement();
transport.MaxReceivedMessageSize = 100 * 1024 * 1024;
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = uri;
host.Description.Behaviors.Add(smb);
host.AddServiceEndpoint(typeof(ISoapService), new CustomBinding(new GzipBinding(), transport), "");
host.Open();
}
我的自定义绑定是GzipBinding。
在客户端,我也想使用这个绑定。创建客户端对象的代码:
CustomBinding binding = new CustomBinding(new GzipBinding(), new HttpTransportBindingElement());
EndpointAddress address = new EndpointAddress(ConfigurationManager.AppSettings["RemoteSoapServer"]);
var soapClient = new ServiceReference.SoapServiceClient(binding, address))
soapClient.Upload(new file());
问题是,然后我创建了肥皂服务覆盖GzipBinding的方法被称为应该,但在客户端方法没有被调用,并且因为我认为我的绑定没有使用所以最后我得到关于MessageVesrison不匹配的例外。更多 - 我的客户端没有尝试连接到远程主机它抛出错误然后尝试调用方法上传。任何帮助请。