有没有办法在C#中使用指定的端点地址创建WCF服务客户端的实例而不指定配置名称?
默认情况下,客户端具有以下构造函数:
public ServiceClient()
public ServiceClient(string endpointConfigurationName)
public ServiceClient(string endpointConfigurationName, string remoteAddress)
Run Code Online (Sandbox Code Playgroud)
显然,由于第一个构造函数,有一个默认配置.我想要的是只指定最终构造函数的第二个参数.现在,我正在努力阅读使用ConfigurationManager来解决它的配置元素,但它看起来非常麻烦.有更干净的方式吗?
Gra*_*ter 10
我不想在.config文件中使用端点配置.我通常做这样的事情:
BasicHttpBinding basicbinding = new BasicHttpBinding();
basicbinding.SendTimeout = TIMEOUT;
basicbinding.OpenTimeout = TIMEOUT;
ServiceClient client = new ServiceClient(basicbinding, new EndpointAddress(new Uri("http://xxxxx")));
Run Code Online (Sandbox Code Playgroud)
您生成的客户端也应该有一个如下所示的构造函数:
public ServiceClient(
System.ServiceModel.Channels.Binding binding,
System.ServiceModel.EndpointAddress remoteAddress)
: base(binding, remoteAddress) {
}
Run Code Online (Sandbox Code Playgroud)
您可以在没有端点配置的情况下调用此方法.
如果您实际上只想调用一个服务,而不必了解有关 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);
Run Code Online (Sandbox Code Playgroud)
上面假设您生成了一个服务引用,并且不需要配置信息存在于任何地方,不在生成的服务引用中,不在 DLL 中,也不在可执行文件中。没有配置。没有任何。
我在真正的独立服务代理 dll 中使用上述内容。它是真正意义上的独立,因为它是完全可配置的,不依赖于调用可执行文件来提供任何内容。
好吧,您可以使用默认构造函数,但随后您必须在所有配置设置中手动进行编程。通过指定配置名称,服务客户端将自动从 .config 文件加载配置,您只需知道要使用哪个配置(您可以有多个配置,例如一个用于 HTTP,另一个用于 Net.Tcp)。当然,remoteAddress 只是告诉 WCF 在哪里建立连接。
如果您在配置客户端设置本身时遇到问题,请确保您使用的是 WCF 服务配置工具。它适用于服务配置和客户端配置。
归档时间: |
|
查看次数: |
16531 次 |
最近记录: |