Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 最低配置,使;添加服务参考>;“发现”;工作_C#_Wcf_Visual Studio 2010 - Fatal编程技术网

C# 最低配置,使;添加服务参考>;“发现”;工作

C# 最低配置,使;添加服务参考>;“发现”;工作,c#,wcf,visual-studio-2010,C#,Wcf,Visual Studio 2010,我已经测试了一些WCF+Windows服务,它们可以作为Windows服务在远程开发机器上正常运行。除了一个 为了进行调试,我尝试使用内置的“添加服务引用”托管WCF(没有Windows服务),然后在visual studio中托管它(不知道该主机的名称) 无论如何,我无法获取Add Service引用来发现我的服务 因为我使用的是Windoes服务,所以我使用的是TCP。这是我在winforms应用程序中所做的一些事情,我正在添加服务引用: 添加项目>属性>调试>命令行参数:/client:“

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

为了进行调试,我尝试使用内置的“添加服务引用”托管WCF(没有Windows服务),然后在visual studio中托管它(不知道该主机的名称)

无论如何,我无法获取Add Service引用来发现我的服务

因为我使用的是Windoes服务,所以我使用的是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 sutff,例如SyncContext。我可能需要在Winforms中添加引用?或者“添加服务引用”会为我添加它们吗?服务和契约由本地数据库缓存模板生成。可能与问题无关。

右键单击要在PC上承载的服务,然后右键单击并转到“调试”>“启动新实例”

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

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


我想这就是你想要做的。请告诉我是否是其他原因。

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

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

<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
更多的guid可以在上找到。(谢谢mztools!)

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

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


我相信这是最低设置。

此方法仅适用于我拥有的4个dll中的1个。对dll有什么要求吗?例如,dll中只能有一个服务?它给出了“无法启动类库的输出类型…”他说,
无论如何,我无法获得Add Service引用来发现我的服务
@jgauffin实际上,我认为让其中一个或另一个工作将使两者都工作。