3

为什么我能够做到这一点:

var _channel = new ChannelFactory<T>("bindingname").CreateChannel();

但不是这个

var _channelFactory = new ChannelFactory<T>("bindingname");
var _channel = _channelFactory.CreateChannel();

第二个片段抱怨我需要传入一个EndPointAddressinCreateChannel()而第一个不需要。

2个片段本质上不是一样的吗?

4

2 回答 2

7

这可能是因为var _channelFactory = new ChannelFactory<T>("bindingname"); 将 _channelFactory 解析为IChannelFactory<T>而不是ChannelFactory<T>.

尝试

ChannelFactory<T> _channelFactory = new ChannelFactory<T>("bindingname");
var _channel = _channelFactory.CreateChannel();

ChannelFactory<T>有一个不带参数的 CreateChannel() 方法。IChannelFactory<T>没有不带参数的 CreateChannel() 方法。

于 2013-12-05T11:47:17.040 回答
0

查看 ChannelFactory 的构造函数的签名,唯一将单个字符串作为输入的签名是要求端点配置名称 - 而不是绑定名称。这可能是您问题的根源吗?您可能错误地构造了 ChannelFactory?见下文:-

    public ChannelFactory();
    public ChannelFactory(Binding binding);
    public ChannelFactory(ServiceEndpoint endpoint);
    public ChannelFactory(string endpointConfigurationName);
    protected ChannelFactory(Type channelType);
    public ChannelFactory(Binding binding, EndpointAddress remoteAddress);
    public ChannelFactory(Binding binding, string remoteAddress);
    public ChannelFactory(string endpointConfigurationName, EndpointAddress remoteAddress);
于 2012-12-19T11:44:16.600 回答