[英]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.