首页 新闻 搜索 专区 学院

使用WCF创建订阅发布程序时,客户端点击订阅时出现“ChannelFactory.Endpoint 上的地址属性为空。ChannelFactory 的终结点必须指定一个有效的地址。”

1
悬赏园豆:5 [已关闭问题] 关闭于 2011-03-18 11:45

private IMessagePublishService createProxy()
        {
            using (DuplexChannelFactory<IMessagePublishService> cf =
                new DuplexChannelFactory<IMessagePublishService>("messagepublishservice"))
            {
                IMessagePublishService proxy = cf.CreateChannel();
                return proxy;
            }
        }

就是这里的cf.CreateChannel()报错。内容为:“ChannelFactory.Endpoint 上的地址属性为空。ChannelFactory 的终结点必须指定一个有效的地址。”

APP.CONFIG里面已经配置了终结点信息

<system.serviceModel>
    <client>
      <endpoint address="net.tcp://127.0.0.1:9999/MessagePublishService"
                binding="netTcpBinding"
                contract="WcfServiceLibrary.IMessagePublishService"
                name="messagepublishservice"
                />
    </client>
  </system.serviceModel>

哪位大侠知道问题之所在,请指教,小弟感激不尽。

问题补充: 解决方法如下:在DuplexChannelFactory的时候,后面参数列表写如下内容。(context, binding, new EndpointAddress("net.tcp://127.0.0.1:9999/MessagePublishService"))) context是一个InstanceContext类。binding是一个NetTcpBinding类。 不过这是临时的解决方法,不是最好的。一般的ChannelFactory在实例化的时候后面括号里面直接写app.config文件里的终结点名称就可以了,这个为什么不行呢?希望有大牛可以给出深刻的解释。哈哈~ 刚才找到了最佳方案,原来就是要比一般的ChannelFactory<>多一个context。其实可以这样DuplexChannelFactory(context,"messagepublishservice")。 额~~~这个问题我自己问一次,答两次。搞定了。
tincyho的主页 tincyho | 初学一级 | 园豆:200
提问于:2011-03-17 11:41
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册