WCF配置 - 如何将其从app.config中分离出来?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

我有一个具体要求,即将所有客户端WCF配置(<system.serviceModel>)从主app.config文件中移出,并移入单独的XML文件。我希望看到的行为与使用File =“”指令的appSettings部分中提供的行为类似。事实上,我最好能够为每个消费服务指定一个单独的文件...

我知道我可以构建一个自定义的ChannelBuilder工厂,它可以从XML文件(或其中的一系列文件)读取配置数据,但我宁愿仍然拥有客户端“自动发现”的配置数据。

一些基本的谷歌搜索似乎表明这是不可能的,但我想从这里获得观点 - 这里有人知道我无法找到的东西吗?

Tim Scott和davogones都提出了一个可能的建议,但依赖于将system.serviceModel部分的组成部分拆分出来以分离文件。虽然这并不是我想要的(我想定义每个服务及其相关元素,每个服务一个文件),但这一个选项。我会调查并让你知道我的想法。

提问于
用户回答回答于

我倾向于以编程方式配置我的所有服务设置。

我的客户不是真正了解XML的类型,并且要求我使配置文件更像旧的INI风格。

这很容易(读取INI文件代码不包括在内):

        // create the URI which is used as the service endpoint
        Uri tcpBaseAddress = new Uri(
                string.Format("net.tcp://{0}:{1}",
                    LocalIPAddress.ToString(), GeneralPortNumber));

        // create the net.tcp binding for the service endpoint
        NetTcpBinding ntcBinding = new NetTcpBinding();
        ntcBinding.Security.Mode = SecurityMode.None;
        System.ServiceModel.Channels.Binding tcpBinding = ntcBinding;

        // create the service host and add the endpoint
        Host = new ServiceHost(typeof(WordWarService), tcpBaseAddress);

因为我们可以编程方式配置主机(和客户端),所以没有什么能够阻止以任何选择的方式(数据库,xml,疯狂文本文件等)提供设置。

扫码关注云+社区