场景:
1.10个.NET webservice站点
2.客户端采用动态代理方式 访问webservice。
3.NGINX做负载均衡。静态页面访问 测试正常(地址:http://localhost)
问题:
1.动态代理访问时会先根据wsdl生成临时代理DLL
2.但代理DLL当中的<soap12:address location="http://localhost:8882/WebService.asmx"/>
地址是随机的生成时是那个地址 后面的代理就是那个地址 怎么修改这个地址了?
问题的根源在于 SOAP 的地址生成的是本地的 不是NGINX的。
只需要用NGINX自带的替换模块 替换成NGINX的就行了
behavior节点下加个useRequestHeadersForMetadataAddress
这貌似是WCF下面的实现吧 在我们的另外一个 WCF 做的WS上面就这样做的 感谢你的回答
System.ServiceModel.BasicHttpBinding binding = new System.ServiceModel.BasicHttpBinding();
System.ServiceModel.EndpointAddress address = new System.ServiceModel.EndpointAddress("your nginx server address");
xxxSoapClient client = new xxxSoapClient(binding, address);
这种方式正常WS 可以但是如果采用动态代理就不得行。谢谢你的回答。
这是很正常的,Nginx做不了SOAP的负载。
我基于RabbitMQ实现了WCF的负载均衡,可以参考下。
http://git.oschina.net/lishilei0523/WCF-RabbitMQ
感谢你的回答