c# - 如何使动态生成的 .net 服务客户端从 *.config 文件以外的其他位置读取配置

标签 c# .net wcf proxy web-services

我目前编写的代码是使用 ServiceContractGenerator 生成基于 wsdl 的 Web 服务客户端代码,然后使用代码 dom 将其编译成内存中的程序集。然后我使用反射来设置绑定(bind)、端点、服务值/类型,然后最终调用基于可在运行时更改的 xml 配置的 Web 服务方法。

目前一切正常。但是,我目前遇到的问题是,我遇到了几个需要大量自定义绑定(bind)/安全设置的奇异 Web 服务。这迫使我在我的自定义 xml 配置中添加越来越多的配置,以及对我的代码进行相应的更新,以在代码中解释和设置这些绑定(bind)/安全设置。

最终,这会使添加这些“奇特”服务的速度变慢,我可以预见自己最终会重新实现 web 或 app.config 文件的“system.serviceModel”部分,这绝不是一件好事。

我的问题是,这就是我缺乏 .net 和 C# 经验的地方,有没有一种方法可以定义通常在其他地方的 web.config 或 app.config“system.serviceModel”部分中找到的配置,以及在运行时将此提供给 Web 服务客户端的配置?

有没有办法将 app.config 作为资源直接附加到程序集或以任何其他方式向客户端提供此配置?

基本上,我想将仅包含“system.serviceModel”的 app.config 附加到包含 Web 服务客户端的程序集,以便它可以使用其配置。这样我就不需要在阳光下处理所有配置,我可以让 .net 为我做这件事。

仅供引用,我无法将每项服务的配置放入正在运行的应用程序的 app.config 中。

如有任何帮助,我们将不胜感激。

提前致谢! 布莱恩

最佳答案

  • 创建一个派生自的自定义类 ChannelFactory。
  • 覆盖 protected 创建描述方法。在里面 覆盖,你需要...
  • 调用 base.CreateDescription()。
  • 读入您的自定义配置。
  • 创建一个基于自定义 ServiceEndpoint 在你的配置上。别忘了 绑定(bind)、行为等。
  • 返回该自定义 ServiceEndpoint。

更多详情 HERE

关于c# - 如何使动态生成的 .net 服务客户端从 *.config 文件以外的其他位置读取配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2821565/

相关文章:

c# - 如何防止垂直滚动条在控件中占用空间,导致水平滚动条?

c# - 等待响应时逐行传输数据

c# - 使用哪个 linq 在当前集合中的集合中进行集合搜索

c# - 由字段初始化引起的有害代码爆炸的真实示例是什么?

c# - 如何将 ControlTemplate 转换为 WPF 中的 XAML 字符串?

c# - 如何在 ADO.NET Entity Framework 中使用存储过程

wcf - WCF 服务中莫名其妙的程序集负载 (IIS 7)

c# - IIS 7.5、Web 服务和 HTTP 405 错误

c# - 如何获得二维数组的唯一 ID?

c# - 如何使用 LINQ to Entities 包含另一个表中的一个特定行