动态切换配置文件(Web或app config)

时间:2012-02-28 10:32:02

标签: c# .net dynamic web-config

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

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

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

  1. 拥有不同的DLL副本(名为a.dll,b.dll)并通过反射加载它。这里的问题是它仍然会寻找web.config而不是a.dll.config。此外,由于主程序中引用了相同的类型以及反射的程序集,因此它很疯狂。
  2. 使用AppDomain.CurrentDomain.SetData("WEB_CONFIG_FILE", @"Config\Path")动态更改配置,并在通话后将其切换回来。这里的问题是,在第一次之后,即使我切换它也不会再次加载配置部分。
  3. 使用ConfigurationManager.RefreshSection(@"configuration\mysection")强制刷新。这似乎不起作用,人们说这个调用在.NET中是错误的
  4. 我看到了一些更新web.config的建议,但这对我来说可能不是一个好选择,因为值的切换会经常发生
  5. 我还能做些什么吗?

1 个答案:

答案 0 :(得分:2)

在单独的进程中托管DLL并使用COM(或.Net远程处理或Web服务或类似工具)进行通信。

即。使用C#(比如)创建一个主机进程a.exe,它将类公开为COM对象,这些类依次调用DLL方法/类。注册为COM对象。

然后创建相同的b.exe(但使用不同的CLSID)。

现在,您可以为a.exe和b.exe(在不同的文件夹中)配置不同的配置文件,但两者都可以使用DLL服务。

您也可以通过使用两个内部Web应用程序并使用SOAP或其他内容与他们交谈来做类似的事情。

但最重要的是,如果DLL在web.config上运行,则必须将其中至少一个放入单独文件夹中的单独进程中。