我们是否可以使用带有WCF Connected Service的基于环境的端点?

时间:2018-07-18 18:04:29

标签: c# wcf app-config service-reference

我最近将我们的一个程序集(参考库)从旧的CSProj格式迁移到了新的CSProj格式(Microsoft.Net.Sdk格式)。由于遍历规则及其如何很好地处理依赖项(参考,项目参考,包参考),因此这很有帮助。

转换后,不再有“服务引用”的选项,而是“连接的服务”。我删除了旧的Service Reference文件(代码,wsdl,xsd等),并创建了一个新的Connected Service。

看起来更干净,因为它会生成json配置(用于自动生成代码)和单个Reference.cs文件。自动生成的代码与生成的旧服务参考代码有些不同。首先,所有方法都是异步的(有意义),因此我调整了代码以解决此问题。

我遇到的问题是,我们最初依赖于应用程序的Web.Config文件(还有Web.Dev.Config,Web.Test.Config等)-在部署过程中,我们重命名/替换了Web.Config具有适当的环境配置。一切正常,我们的应用程序添加了对库的引用,并且该应用程序保存了配置信息。

有了新的Connected Services自动生成的代码,就很难在本地主机地址中作为端点进行编码,因为我用它来自动生成了代码。

基本上,旧的“服务参考”生成的代码使客户端的默认构造函数从应用程序配置中提取端点。新的Connected Service提供过载,但默认情况下不会从配置中拉出端点。

<system.serviceModel>
  <client>
    <endpoint address="http://xdev/xservice.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IXService" contract="XService.IXService" name="BasicHttpBinding_IXService" />
  </client>
</system.serviceModel>

通过新的WCF Connected Services自动生成的代码来利用我的应用程序配置,我有什么不同?

1 个答案:

答案 0 :(得分:0)

请参见this答案。

我要做的是将端点URL存储在<appSettings>中。

我对开发端点被编译到源代码中并且仍然是一个后备的事实并不完全满意。如果由于某种原因而被选中,那么您将发现一个很难发现的错误。如果有人有解决方案,我会很感兴趣。