繁体   English   中英

使“添加服务引用”>“发现”工作的最低配置

[英]Minimum configuration to make “Add Service Reference > Discover” work

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

为了调试,我尝试使用内置的“添加服务引用”来托管WCF(没有Windows服务),然后将其托管在visual studio中(不知道主机的调用方式)。

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

由于我使用的是Windoes服务,我使用的是TCP。 这是我已经完成的一些事情, 所有这些都在我添加服务引用的winforms应用程序中

添加项目>属性>调试>命令行参数:/client:“WTfTestClient.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 sutff,例如SyncContext。 我可能要在Winforms中添加引用? 或者“添加服务参考”会为我添加它们吗? 服务和合同由本地数据库缓存模板生成。 也许与问题无关。

发布后,我继续寻找答案,这是我尝试工作的原因:

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

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

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

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

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

我相信这是最低限度的设置。

右键单击要在PC上托管的服务,然后右键单击并运行Debug> Start New Instance

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

然后,您可以使用上面相同的方法启动它,并在本地计算机上调试这两个项目。

我认为这是你想要做的。 请告诉我这是不是别的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM