为什么我能做到这一点:
var _channel = new ChannelFactory<T>("bindingname").CreateChannel();但不是这个
var _channelFactory = new ChannelFactory<T>("bindingname");
var _channel = _channelFactory.CreateChannel();第二个代码片段抱怨我需要在CreateChannel()中传入一个EndPointAddress,而第一个代码片段却没有。
这两个片段在本质上不是相同的吗?
发布于 2013-12-05 19:47:17
这可能是因为var _channelFactory = new ChannelFactory<T>("bindingname");将_channelFactory解析为IChannelFactory<T>而不是ChannelFactory<T>。
试一试
ChannelFactory<T> _channelFactory = new ChannelFactory<T>("bindingname");
var _channel = _channelFactory.CreateChannel();ChannelFactory有一个不带参数的CreateChannel()方法。IChannelFactory没有不带参数的CreateChannel()方法。
发布于 2012-12-19 19:44:17
看一下ChannelFactory的构造函数的签名,唯一接受单个字符串作为输入的是请求一个endpointConfigurationName,而不是绑定名称。这会是你问题的根源吗?您可能不正确地构建了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);https://stackoverflow.com/questions/13364026
复制相似问题