要做的最小配置“添加服务参考”Discover"工作

本文关键字:Discover 参考 quot 工作 服务 添加 配置 | 更新日期: 2023-09-27 18:18:27

我已经测试了一些WCF + Windows服务,并在远程开发机器上作为Windows服务正常运行。除了一个。

为了调试,我尝试使用内置的"添加服务引用"来托管WCF(没有Windows服务),然后在visual studio中托管它(不知道主机叫什么)。

无论如何,我无法获得添加服务引用来发现我的服务。

因为我使用windows服务,我使用TCP的东西。这是我所做的一些事情,所有在winforms应用程序中,我正在添加服务引用:

添加项目>属性>调试>命令行参数:/client:"WcfTestClient.exe",但exe不运行。

和我的App.Config

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>
    <client>
      <endpoint address="net.tcp://localhost:32279/SYNC" binding="netTcpBinding"
        bindingConfiguration="tcpSyncBindingConfig" contract="Company.Data.Sync.ILocalCacheSyncContract"
        name="tcpSyncClientEP" />
    </client>
    <bindings>
      <netTcpBinding>
        <binding name="tcpSyncBindingConfig" maxReceivedMessageSize="6553600" />
      </netTcpBinding>
      <mexTcpBinding>
        <binding name="tcpMexBindingConfig" />
      </mexTcpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="svcBehavior" name="Company.Data.Sync.Services.LocalCacheSyncService">
        <endpoint address="net.tcp://localhost:32279/Sync" binding="netTcpBinding"
          bindingConfiguration="tcpSyncBindingConfig" name="tcpSyncListenEP"
          contract="Company.Data.Sync.Services.ILocalCacheSyncContract" />
        <endpoint address="net.tcp://localhost:32279/Sync/mex" binding="mexTcpBinding"
          bindingConfiguration="tcpMexBindingConfig" name="tcpMexEP" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="svcBehavior">
          <serviceMetadata httpGetEnabled="false" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

边注: ServiceOperation返回Microsoft.Synchronization.Data.xxx的东西,例如SyncContext。我可能需要在Winforms中添加一个引用?或者"添加服务参考"会为我添加它们吗?服务和契约由本地数据库缓存模板生成。可能与问题无关

要做的最小配置“添加服务参考”Discover"工作

发帖后,我继续寻找答案,这就是我的实验工作:

项目文件本身,例如*。c#项目的csproj必须包含用于Visual Studio的WCF的ProjectTypeGuid,以便开始检查项目中的服务。

<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

更多guid可以在http://www.mztools.com/articles/2008/mz2008017.aspx找到。(谢谢mztools !)

WCF项目可以有多个服务,每个服务都需要在项目的App.Config中定义它们的配置。每个服务需要有不同的mex端点地址。这些服务还可以共享定义了serviceMetadata扩展的单个服务行为。Mex端点不需要行为或绑定配置。但请记住将mex端点合约设置为imetadataexchange。

对于TCP mex, serviceMetadata> HttpGetEnabled必须设置为false。

右键单击您希望在PC上托管的服务,然后右键单击并选择调试>启动新实例

然后转到您的其他应用程序(我假设相同的解决方案)并复制它正在运行的URL。

然后你可以用同样的方法启动那个项目,并在你的本地机器上调试两个项目。

我猜这就是你想要做的。