从app.config以外的文件初始化BasicHttpBinding对象?

时间:2012-09-18 08:09:37

标签: c# xml plugins dynamics-crm-2011 basichttpbinding

我目前在C#中有代码需要BasicHttpBinding对象连接到SSRS。就目前而言,我使用代码中指定的值初始化此对象,而不是从app.config读取它(这是因为我部署到MS CRM 2011的平台无法访问{{1用于阅读的文件。实际上,我认为app.config文件甚至不会被复制到服务器上。

我想在不重新编译的情况下使这个绑定可编辑,因此可以在不同的客户轻松安装解决方案。我能想到的最简洁的方法是将绑定配置存储在Web资源中(对于非CRM人员,这只是存储在CRM中的文件的名称,您可以从代码中访问),但我不是确定将该配置解析为app.config对象的最佳方法?手动解析它并设置属性似乎效率低下且不够稳健。

有没有办法让.NET为我(类似于BasicHttpBinding构造函数,但由于我无法访问app.config,这不是一个选项)?

1 个答案:

答案 0 :(得分:0)

鉴于此配置的(可能)低波动性,您是否可以在插件注册步骤中将其存储在插件安全/不安全配置中?在运行时访问它会快速连接到CRM以检索Web资源的内容。当然,这意味着您需要插件注册工具和系统管理员进行更改,但这也意味着任何敏感数据都会被用户混淆。插件的App.config确实不可用 - 但这就是插件步骤中的配置部分的用途。

至于使用BasicHttpBinding的构造函数 听起来你正在寻找一种通过传递配置部分的密钥名称为你完成所有构造函数魔法的方法。我不相信这是可能的,但无论如何你的建议“手动解析它并设置属性似乎效率低下”可能是毫无根据的 - 毕竟这正是本机构造函数最终将是什么无论如何。将它隐藏在一个函数后面,你永远不会知道它在那里;)

我之前已经在插件中连接到SSRS Web服务(请注意 - 由于服务未公开,因此在CRM Online中不支持:()我采用了我常用的存储配置方法,如上所述,在插件配置中然后在运行时将其读入XmlDocument,然后根据需要解析出值以实例化对象/集属性。

只要对插件的所有请求的配置相同,您还可以通过将配置值(而不是连接本身)设置为您的类级别属性来提高效率。插件(即使这是反对SDK中的建议 - 但这是由于线程安全,这不应该是“静态”配置值(如此)的问题),并且只有在尚未设置的情况下才从config读取值。