动态切换配置文件(web或应用程序配置)
本文关键字:应用程序 配置 web 配置文件 动态 | 更新日期: 2023-09-27 18:25:58
我有一个引用DLL的web应用程序。此DLL具有某些配置值,这些值通常是web.config的一部分。
需要在不同的配置下从web应用程序调用此DLL。DLL是第三方的,无法更改。
尝试了以下操作,但失败了。
- 拥有不同的DLL副本(名为a.DLL、b.DLL)并通过反射加载。这里的问题是,它仍然会查找web.config,而不是.dll.config。此外,由于在主程序和反射程序集中引用了相同的类型,所以它会变得疯狂
- 使用
AppDomain.CurrentDomain.SetData("WEB_CONFIG_FILE", @"Config'Path")
动态更改配置,并在调用后将其切换回。这里的问题是,在第一次之后,即使我切换,它也不会再次加载配置部分 - 使用
ConfigurationManager.RefreshSection(@"configuration'mysection")
强制刷新。这似乎不起作用,人们说这个调用在.NET中有漏洞 - 我看到了一些更新web.config的建议,但这对我来说可能不是一个好选择,因为值的切换会非常频繁
我还能做什么吗?
在单独的进程中托管DLL,并使用COM(或.Net远程处理或web服务或类似服务)进行通信。
也就是说,使用C#创建一个主机进程.exe,它将类公开为COM对象,这些类依次调用DLL方法/类。注册为COM对象。
然后创建相同的b.exe(但CLSID不同)。
您现在可以为a.exe和b.exe(在不同的文件夹中)拥有不同的配置文件,但两者都可以使用DLL服务。
您也可以通过拥有两个内部web应用程序并使用SOAP或其他东西与它们进行对话来做类似的事情。
但最重要的是,如果DLL在web.config上工作,则必须将其中至少一个DLL放入单独文件夹中的单独进程中。