【问题标题】:Can't host tcp based wcf service on IIS, Cannot obtain Metadata from net.tcp://localhost/TestApp2/MyService error pops upCan't host tcp based wcf service on IIS, Cannot get Metadata from net.tcp://localhost/TestApp2/MyService 弹出错误
【发布时间】:2012-01-25 15:08:54
【问题描述】:

我有一个简单的测试目的 WCF 服务。我正在尝试在 IIS 7.5 ( Windows 7 ) 下托管它,但到目前为止还没有运气。我收到错误

无法从 net.tcp://localhost/TestApp2/MyService 获取元数据

我在默认网站下有一个网站 TestApp2,我在默认网站和 TestApp2 上启用了 tcp。这是我的 web.config 文件,虽然我意识到这个错误只是表明我没有用于元数据交换的端点,但我看不出有什么问题,因为我包含了元数据交换的端点。

<system.serviceModel>
<services>
  <service behaviorConfiguration="ServiceBehavior" name="MyService">

    <endpoint address="net.tcp://localhost/TestApp2/MyService"
              binding="netTcpBinding"
              bindingConfiguration="PortSharingBinding"
              contract="II7WcfService.IService1" />

    <endpoint address="MEX"
              binding="mexTcpBinding"
              contract="IMetadataExchange" />

    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost/TestApp2/MyService" />
      </baseAddresses>
    </host>

  </service>
</services>
<bindings>
  <netTcpBinding>
    <binding name="PortSharingBinding" portSharingEnabled="true">
      <security mode="None"/>
    </binding>
  </netTcpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="False" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>

谢谢。

【问题讨论】:

    标签: wcf iis tcp nettcpbinding


    【解决方案1】:

    我的猜测是你的服务实际上并没有被称为MyService,而是在一个命名空间中。这意味着您声明的端点没有被拾取,而是使用默认端点(不包括IMetadataExchange)。

    将命名空间的名称添加到配置中的属性,它应该可以工作。

    【讨论】:

    • 感谢 Richard 的回复,MyService 是 svc 文件,它的标记中只有 ServiceHost 声明 &lt;%@ ServiceHost Language="C#" Debug="true" Service="IIS7HostedWCFService.Service1" %&gt; 所以你可以看到不存在命名空间。 Service1 是 .cs 文件,它是我的合同( IService1 )的实现。那么我应该改变一些东西吗?
    • 服务名称是IIS7HostedWCFService.Service1 - 把它放在配置文件而不是MyService中
    • 我终于修好了,问题是我的 svc 和 ServiceContract 实现有不同的名称。谢谢理查德!
    猜你喜欢
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多