首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF ChannelFactory.CreateChannel()

WCF ChannelFactory.CreateChannel()
EN

Stack Overflow用户
提问于 2012-11-13 23:54:22
回答 2查看 3.7K关注 0票数 3

为什么我能做到这一点:

代码语言:javascript
复制
var _channel = new ChannelFactory<T>("bindingname").CreateChannel();

但不是这个

代码语言:javascript
复制
var _channelFactory = new ChannelFactory<T>("bindingname");
var _channel = _channelFactory.CreateChannel();

第二个代码片段抱怨我需要在CreateChannel()中传入一个EndPointAddress,而第一个代码片段却没有。

这两个片段在本质上不是相同的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-05 19:47:17

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

试一试

代码语言:javascript
复制
ChannelFactory<T> _channelFactory = new ChannelFactory<T>("bindingname");
var _channel = _channelFactory.CreateChannel();

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

票数 7
EN

Stack Overflow用户

发布于 2012-12-19 19:44:17

看一下ChannelFactory的构造函数的签名,唯一接受单个字符串作为输入的是请求一个endpointConfigurationName,而不是绑定名称。这会是你问题的根源吗?您可能不正确地构建了ChannelFactory?见下图:

代码语言:javascript
复制
    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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13364026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档