gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 22:21:46 25 4
gpt4 key购买 nike

我目前编写的代码是使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com