1

我正在尝试从 WCF 服务库生成客户端代理。我在 Windows XP Pro 工作站上使用 VS2005、.NET 3.0。WCF 服务托管在 Windows 服务中。当我将 Windows 服务作为控制台应用程序运行时,没有问题。我可以针对该地址运行 svcutil.exe 并生成代理。但是,当我在发布模式下编译该服务并使用 InstallUtil 将其安装在工作站上时,出现错误“错误:无法从 net.tcp://localhost:9090/Service2 获取元数据”。这些是我为服务使用 app.config 的设置

<behaviors>
  <endpointBehaviors>
    <behavior name="Test2">
      <dataContractSerializer maxItemsInObjectGraph="2147483647" />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="serviceBehaviour">
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceMetadata />
      <!--<serviceMetadata httpGetEnabled="true" />-->
      <dataContractSerializer maxItemsInObjectGraph="2147483647" />
    </behavior>
  </serviceBehaviors>
</behaviors>


<bindings>
  <customBinding>
    <binding name="TestBinding2" inactivityTimeout = "00:30:00"  openTimeout="00:30:00"
         receiveTimeout="00:30:00"
         sendTimeout="00:30:00">
      <binaryMessageEncoding />
      <tcpTransport transferMode="StreamedResponse" />

    </binding>
  </customBinding>
</bindings>

4

1 回答 1

0

在黑暗中拍了几张...

您的 Windows 服务是否正在运行?除此之外,您的 WCF 服务是否在 Windows 服务中运行?我的项目还在 Windows 服务中托管 WCF 服务(您可以在此处查看一般步骤)。即使我将 Windows 服务标记为自动启动,我仍然必须在第一次手动启动它。也许 InstallUtil.exe 有一个命令行选项,我不知道它会为我做这件事。但关键是,如果你的 Windows 服务或你里面的 WCF 服务没有运行,你显然看不到 MEX 端点。

我注意到的另一件事。您的错误表明无法从 net.tcp://localhost:9090/Service2 获取元数据,但您在评论中发布的基地址显示为 net.tcp://localhost:9090/Service_2。也许这只是一个类型-o,但仔细检查所有内容是否拼写正确并没有什么坏处,特别是如果 add.config 是手动生成的。

于 2009-03-29T00:42:51.407 回答