none
WCF中如何实现多个 EndPoint? RRS feed

  • 问题

  • XML code
    <service behaviorConfiguration="AthleticService.Service1Behavior" name="AthleticService.分公司业务.Proxy_分公司业务"> <endpoint address="AthleticService.分公司业务.模块.I_销售合同.svc" binding="wsHttpBinding" contract="AthleticService.分公司业务.模块.I_销售合同" bindingConfiguration="myBinding" /> <endpoint address="AthleticService.分公司业务.模块.I_发货合同.svc" binding="wsHttpBinding" contract="AthleticService.分公司业务.模块.I_发货合同" bindingConfiguration="myBinding"/> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> <host> <baseAddresses> <add baseAddress="http://192.168.100.147:7878/" /> </baseAddresses> </host> </service>


    会抛出
    “错误: 无法从 http://192.168.100.147:7878/mex 获取元数据如果是您有权访问的 Windows (R) Communication Foundation 服务,请检查是否已启用在指定地址发布元数据。有关启用元数据发布的帮助,请参阅 http://go.microsoft.com/fwlink/?LinkId=65455 上的 MSDN 文档。”

    如果删掉其中一个 EndPoint,那么就执行成功。
    我查阅了相关文档,但不甚了解。。。达人求助、、、

    Vseen
    2010年4月28日 6:49

答案

  •     <endpoint address="AthleticService.分公司业务.模块.I_销售合同.svc"
             binding
    ="wsHttpBinding"
             contract
    ="AthleticService.分公司业务.模块.I_销售合同"
             bindingConfiguration
    ="myBinding" />

       
    <endpoint address="AthleticService.分公司业务.模块.I_发货合同.svc"
             binding
    ="wsHttpBinding"
             contract
    ="AthleticService.分公司业务.模块.I_发货合同"
             bindingConfiguration
    ="myBinding"/>

    你的两个endpoint在监听同一个地址,这样导致服务启动失败,所以访问metadata 服务也失败了。

    更改其中一个endpoint address 可以解决问题


    Mog Liang
    2010年5月4日 5:49

全部回复

  • 尝试了多次,仍然以失败告终,偏偏这种错误又搜索不到什么
    Vseen
    2010年4月28日 7:35
  • 为什么会出现这种奇怪的现象呢?

    我也没看出来,按照道理这个地址是可以的

     

    你的项目是什么类型?服务在IIS里托管?

    直接尝试http://192.168.100.147:7878/ 看看怎么样


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2010年4月29日 4:51
    版主
  •     <endpoint address="AthleticService.分公司业务.模块.I_销售合同.svc"
             binding
    ="wsHttpBinding"
             contract
    ="AthleticService.分公司业务.模块.I_销售合同"
             bindingConfiguration
    ="myBinding" />

       
    <endpoint address="AthleticService.分公司业务.模块.I_发货合同.svc"
             binding
    ="wsHttpBinding"
             contract
    ="AthleticService.分公司业务.模块.I_发货合同"
             bindingConfiguration
    ="myBinding"/>

    你的两个endpoint在监听同一个地址,这样导致服务启动失败,所以访问metadata 服务也失败了。

    更改其中一个endpoint address 可以解决问题


    Mog Liang
    2010年5月4日 5:49