我在向我的 app.config 添加实现两个合同的服务时遇到问题,因此需要两个端点。
有关我正在尝试做的基本示例,请参阅此问题:
我真的很想在我的客户端中使用服务参考来为我创建和维护代理,但是当我尝试使用具有两个端点的服务执行此操作时,当它尝试下载元数据时,我在详细信息中收到以下错误:
元数据包含无法解析的引用
这是我如何在我的 wcf 服务库的 app.config 中设置服务的示例:
<service name="MyService">
<endpoint address="Address1" binding="wsDualHttpBinding" bindingConfiguration=""
name="Service1" contract="IService1" />
<endpoint address="Address2" binding="wsDualHttpBinding" bindingConfiguration=""
name="Service2" contract="IService2" />
<endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
name="mex" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8732/Design_Time_Addresses/MyService/" />
</baseAddresses>
</host>
</service>
我觉得我错过了一些简单的东西。当我删除一个端点时,一切正常。但是如果我有两个端点,它就无法解析元数据。
我尝试删除基地址并使用完整地址,并且使用不同的端口,但我尝试过的所有路径都会导致相同的错误。
编辑:我首先应该澄清为什么我想这样做。我有一个单例服务,我希望客户端能够连接到该服务。但是有些方法我不希望客户可以使用。我认为将管理方法和客户端方法分成两个单独的合同将是一个好的开始。
更清楚地说,这是一个游戏服务器。我希望能够启动游戏服务器的新实例并向其发送地图之类的东西。我不希望游戏玩家可以访问诸如 LoadMap() 之类的方法或类似的方法。我真的想将游戏客户端拥有的方法和回调与匹配服务或服务器管理员拥有的方法和回调分开。
我也希望它们是单独的合同,只是为了更容易阅读和维护。
但是,如果有更好的方法可以做到这一点,我愿意接受建议。