创建具有指定地址的WCF服务客户端,而不指定配置名称
本文关键字:配置 客户端 WCF 地址 创建 服务 | 更新日期: 2023-09-27 18:09:58
是否有一种方法可以在c#中使用指定的端点地址创建WCF服务客户端实例,而无需指定配置名称?
默认情况下,客户端有以下构造函数:
public ServiceClient()
public ServiceClient(string endpointConfigurationName)
public ServiceClient(string endpointConfigurationName, string remoteAddress)
显然,由于第一个构造函数,存在一个默认配置。我想要的是只指定最终构造函数的第二个参数。现在,我正在努力阅读使用ConfigurationManager的配置元素来弄清楚它,但它似乎非常麻烦。有没有更干净的方法?
我不喜欢使用.config文件中的端点配置。我通常这样做:
BasicHttpBinding basicbinding = new BasicHttpBinding();
basicbinding.SendTimeout = TIMEOUT;
basicbinding.OpenTimeout = TIMEOUT;
ServiceClient client = new ServiceClient(basicbinding, new EndpointAddress(new Uri("http://xxxxx")));
您生成的客户端也应该有一个构造函数,看起来像这样:
public ServiceClient(
System.ServiceModel.Channels.Binding binding,
System.ServiceModel.EndpointAddress remoteAddress)
: base(binding, remoteAddress) {
}
你可以在没有端点配置的情况下调用这个。
如果你只是想调用一个服务,而不需要了解WCF服务和配置处理的所有知识,在c#中你可以做…
String url = "http:''somehost:someport''pathToSomeService";
EndpointAddress address = new EndpointAddress(url);
Binding binding = new BasicHttpBinding();
YourClient client = new YourClient(binding, address);
// Call your client methods
client.SomeMethod(parm1, parm2);
以上假设您生成了一个服务引用,并且不要求配置信息存在于任何地方,不在生成的服务引用中,不在DLL中,也不在可执行文件中。没有配置。一个也没有。
我在一个真正的独立服务代理dll中使用上述代码。它是独立的,因为它是完全可配置的,不依赖于调用可执行文件来提供任何东西。
好吧,您可以使用默认构造函数,但是您必须手动编写所有配置设置。通过指定配置名称,服务客户端将自动从.config文件中加载配置,您所需要知道的就是使用哪个配置(您可以有多个配置,例如一个用于HTTP,另一个用于Net.Tcp)。remoteAddress,当然,只是告诉WCF在哪里建立连接。
如果您在配置客户端设置时遇到问题,请确保您正在使用WCF服务配置工具。它对服务配置和客户端配置都有效。