要做的最小配置“添加服务参考”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中添加一个引用?或者"添加服务参考"会为我添加它们吗?服务和契约由本地数据库缓存模板生成。可能与问题无关
发帖后,我继续寻找答案,这就是我的实验工作:
项目文件本身,例如*。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。
然后你可以用同样的方法启动那个项目,并在你的本地机器上调试两个项目。
我猜这就是你想要做的。