从Windows服务生成客户端代理

时间:2009-03-28 17:07:40

标签: wcf proxy client stream svcutil.exe

我正在尝试从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>

1 个答案:

答案 0 :(得分:0)

在黑暗中拍摄几张照片......

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

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