如何在.NET中的各种AppDomain之间共享appsettings

时间:2009-07-27 22:59:32

标签: .net appsettings

我想从Application.exe.config共享我的AppSettings,以便由新创建的AppDomains共享/使用。我正在创建AppDomains,如下所示

  public static AppDomain Create(Guid sessionId)
  {
     AppDomain currentDomain = AppDomain.CurrentDomain;

     AppDomainSetup setup = new AppDomainSetup();

     // use the ID as part of the unique name for the process
     string name = "Session_" + sessionId;

     setup.ApplicationName = name;
     setup.ApplicationBase = currentDomain.SetupInformation.ApplicationBase;
     setup.PrivateBinPath = currentDomain.SetupInformation.PrivateBinPath;
     setup.ConfigurationFile = currentDomain.SetupInformation.ConfigurationFile;

     Evidence baseEvidence = currentDomain.Evidence;
     Evidence evidence = new Evidence(baseEvidence);

     return AppDomain.CreateDomain(name, evidence, setup);
  }

我是否需要执行任何其他步骤才能使ConfigurationManager.AppSettings [key]返回与原始AppDomain相同的值?

1 个答案:

答案 0 :(得分:0)

不,你不需要做任何特别的事。

使用以下代码来实现服务器对象:

var instance = (ServerClass)domain.CreateInstance("ClassLibrary1", "ServerClass").Unwrap();

var result = instance.ReadConfig();

来自以下类中的单独汇编:

[Serializable]
public class ServerClass : MarshalByRefObject
{
    public ServerClass() { }


    public string ReadConfig()
    {
        var foo = ConfigurationManager.AppSettings["foo"];
        Console.WriteLine(String.IsNullOrEmpty(foo) ? "null" : foo);

        return foo;
    }
}

从可执行文件(即主appdomain)返回app.config中appsetting的值。