我正在使用一个小小的C#-Tool来使用一个效果很好的网络服务。
现在我在不同的环境(不同的URL)上运行相同的Webservice。 URL由参数(文本输入)传递。
因此我通过以下方式传递不同的网址:
soapEndpointAddress endpointAddress = new EndpointAddress("http://abc.localhost/oxerpservice.php?version=2.14.0");
Client = new Service1SoapClient(binding, endpointAddress);
WSDL中的命名空间包含某些地方的Web服务的URL:
<s:schema elementFormDefault="qualified" targetNamespace="http://abc.localhost/OXERPService">
或
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://abc.localhost.localhost/OXERPService" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://abc.localhost/OXERPService">
现在我想在实例http://xyz.localhost中使用Webservice,而不更新VS-Project中的服务引用。
所以我传递新的URL来发送SOAP请求:http://xyz.localhost。
现在发生的事情是,由于名称空间不同,因此无法找到任何现有操作。
我认为因为我在abc.localhost中添加了服务引用,它仍然在SOAP请求中传递它们,但是它们已经更改为xyz.localhost。
如果我在VS中更新服务引用,一切正常,但目标是在不更改代码/更新服务引用的情况下使用Web服务。
我已经找到了一个可能的解决方案:How to make your Service-Reference proxy URL dynamic? - 但这似乎不起作用,因为我已经将端点的URL传递给客户端。
有没有可能的解决方案?
先谢谢了 - Alex