从自定义源(非标准 XML)加载 WCF 配置(用于服务器 + 客户端)

Posted

技术标签:

【中文标题】从自定义源(非标准 XML)加载 WCF 配置(用于服务器 + 客户端)【英文标题】:Loading WCF config (for server + client) from custom source (not standard XML) 【发布时间】:2010-09-23 16:18:08 【问题描述】:

我一直在尝试找到一种方法来从备用源加载我的 WCF 服务配置(XML 配置数据的巨大 BLOB)——而不是标准的 web.config / app.config。

我们在一个受限的环境中运行,我们无法访问服务器的文件系统,因此我们无法自己对 WCF 配置进行调整和更改 - 我们总是必须找到 IT 经理来处理这个问题。我们已将整个配置放入 SQL Server 数据库,并将 web.config 基本上缩减为一个部分 - 就是这样。

现在,我们想知道是否有一个很好的、记录在案的方法可以为 WCF 做同样的事情 - 是否有一种机制可以插入某种“配置提供程序”?我们能否以某种方式将配置条目存储在数据库表中,并在服务启动时将它们提供给服务?

我还没有找到任何真正有用且易于理解的文档和示例......这里有任何接受者吗?!?!

【问题讨论】:

所以您基本上希望能够通过编辑在请求进来时动态加载的配置来配置您的端点和行为?我想您希望能够通过某种允许编辑此存储配置的用户界面来更改它们? 好吧,甚至不是真正动态的 - 我只想存储服务启动时使用的整个 WCF 配置,或者客户端在查找如何连接到服务时使用的整个 WCF 配置,其他地方比通常的默认 XML 配置文件。诸如绑定、地址等。 与论坛网站不同,我们不使用“谢谢”、“任何帮助表示赞赏”或Stack Overflow 上的签名。见“Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?。;-) 【参考方案1】:

你可以做到这一点,不过这有点工作。

在服务端,您必须创建自己的自定义 ServiceHost 并覆盖 ApplyConfiguration 方法。

查看this blog post

在客户端,您执行类似的操作,但提供自定义 ChannelFactory 并在此处覆盖 ApplyConfiguration 方法。

【讨论】:

确实很有趣 - 非常感谢您的指点!

以上是关于从自定义源(非标准 XML)加载 WCF 配置(用于服务器 + 客户端)的主要内容,如果未能解决你的问题,请参考以下文章

从自定义路径预加载 env 文件

如何从自定义源的请求中获取 Cloudfront 子域?

MacVim 无法从自定义 gvimrc 或 vimrc 文件加载设置

从自定义主题继承所需的 XML 属性

与 @ConfigurationProperties 一起使用的自定义基于 XML 的属性源加载器

Rails:从自定义验证器调用标准验证