当我创建ChannelFactory的新实例时:
var factory = new ChannelFactory();
并且我创建了一个新的通道,我有一个例外,说Endpoint的地址为null.
我在web.config中的配置如上所述,一切都是应该的(特别是端点的地址).
如果我创建一个新的MyServiceClientBase,它会从我的通道工厂加载所有配置:
var factoryWithClientBase = new MyServiceClientBase().ChannelFactory; Console.WriteLine(factoryWithClientBase.Endpoint.Address); //output the configuration inside the web.config var factoryWithChannelFactory = new ChannelFactory(); Console.WriteLine(factoryWithChannelFactory.Endpoint.Address); //output nothing (null)
为什么?
如果在Web.Config中为端点提供如下名称,它是否有效:
并使用ChannelFactory创建频道,如下所示:
var factory = new ChannelFactory("MyWsHttpEndpoint");
我终于找到了答案.ChannelFactory不会从您的Web.Config/app.config中读取信息.ClientBase(然后使用ChannelFactory)可以.
所有这些都花了我几个小时的工作,但我终于找到了一个合理的理由.
:)