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