动态切换配置文件(web或应用程序配置)



我有一个引用DLL的web应用程序。此DLL具有某些配置值,这些值通常是web.config的一部分。

需要在不同的配置下从web应用程序调用此DLL。DLL是第三方的,无法更改。

尝试了以下操作,但失败了。

  1. 拥有不同的DLL副本(名为a.DLL、b.DLL)并通过反射加载。这里的问题是,它仍然会查找web.config,而不是.dll.config。此外,由于在主程序和反射程序集中引用了相同的类型,所以它会变得疯狂
  2. 使用AppDomain.CurrentDomain.SetData("WEB_CONFIG_FILE", @"ConfigPath")动态更改配置,并在调用后将其切换回。这里的问题是,在第一次之后,即使我切换,它也不会再次加载配置部分
  3. 使用ConfigurationManager.RefreshSection(@"configurationmysection")强制刷新。这似乎不起作用,人们说这个调用在.NET中有漏洞
  4. 我看到了一些更新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放入单独文件夹中的单独进程中。

相关内容

最新更新