以编程方式调用 SOAP Web 服务
Calling SOAP web service programmatically
我正在通过添加对服务的引用来使用来自 .NET 代码的 SOAP Web 服务。现在服务 wsdl 端点将来可能会发生变化,所以我想将它添加到配置文件中,以使我的应用程序更加动态。现在我将无法再使用添加的引用,所以我想在不使用服务引用的情况下从代码调用服务。我无法创建 ChannelFacotry
,因为我没有该服务的接口类型,因为它不是 WCF。所以我不能使用这样的东西:
BasicHttpBinding binding = new BasicHttpBinding("MyBinding");
EndpointAddress address = new EndpointAddress(baseUrl);
ChannelFactory factory = new ChannelFactory<IService>(binding, address);
有什么方法可以在不添加服务引用的情况下使用 SOAP Web 服务。如果根本没有,我有什么办法可以从代码动态更新 ServiceReference 的 url?
为什么不将其添加为 "web reference" 而不是服务引用。
- 在解决方案资源管理器中右键单击并添加服务引用
- 点击左下角的高级
- 点击左下方的"Add Web Reference"。
然后添加您的网络参考。将引用添加到您的项目后。右键单击新引用并显示属性。 Select "URL Behavior" 作为动态。
如果 Web 服务移动,这将允许您在将来更改 url。
我正在通过添加对服务的引用来使用来自 .NET 代码的 SOAP Web 服务。现在服务 wsdl 端点将来可能会发生变化,所以我想将它添加到配置文件中,以使我的应用程序更加动态。现在我将无法再使用添加的引用,所以我想在不使用服务引用的情况下从代码调用服务。我无法创建 ChannelFacotry
,因为我没有该服务的接口类型,因为它不是 WCF。所以我不能使用这样的东西:
BasicHttpBinding binding = new BasicHttpBinding("MyBinding");
EndpointAddress address = new EndpointAddress(baseUrl);
ChannelFactory factory = new ChannelFactory<IService>(binding, address);
有什么方法可以在不添加服务引用的情况下使用 SOAP Web 服务。如果根本没有,我有什么办法可以从代码动态更新 ServiceReference 的 url?
为什么不将其添加为 "web reference" 而不是服务引用。
- 在解决方案资源管理器中右键单击并添加服务引用
- 点击左下角的高级
- 点击左下方的"Add Web Reference"。
然后添加您的网络参考。将引用添加到您的项目后。右键单击新引用并显示属性。 Select "URL Behavior" 作为动态。
如果 Web 服务移动,这将允许您在将来更改 url。