ChannelFactory <t>(“*”)是什么意思?</t>

时间:2014-09-25 11:32:32

标签: wcf

我使用ChannelFactory方式与我的其他业务层进行通信。

请参阅此示例:http://benmccallum.wordpress.com/2011/08/27/wcf-web-service-wrapper-closing-disposing-and-aborting-best-practices/

ChannelFactory(&#34; *&#34;)是什么意思,我无法在MSDN上获得有关此内容的任何信息?

1 个答案:

答案 0 :(得分:1)

*通配符表示使用第一个合格端点,因为您可以为同一个合同设置多个端点。我在MSDN上找不到对此的任何引用,但可以看到它在ChannelFactory<T>.InitializeEndpoint(string configurationName, EndpointAddress address)内部使用。使用Dotpeek进行反编译,评论我的

protected void InitializeEndpoint(string configurationName, EndpointAddress address)
{
  this.serviceEndpoint = this.CreateDescription();
  ServiceEndpoint serviceEndpoint = (ServiceEndpoint) null;
  if (configurationName != null)
    // ConfigLoader checks whether the passed configurationName is a wildcard match
    // and uses it when looking up channels from configuration to determine
    // which channel to use
    serviceEndpoint = ConfigLoader.LookupEndpoint(configurationName, address, this.serviceEndpoint.Contract);
  if (serviceEndpoint != null)
  {
    this.serviceEndpoint = serviceEndpoint;
  }
  else
  {
    if (address != (EndpointAddress) null)
      this.Endpoint.Address = address;
    this.ApplyConfiguration(configurationName);
  }
  this.configurationName = configurationName;
  this.EnsureSecurityCredentialsManager(this.serviceEndpoint);
}