1

我想从 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 相同的值?

4

1 回答 1

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;
    }
}

从可执行文件(即主应用程序域)返回 app.config 中 appsetting 的值。

于 2009-07-27T23:29:18.693 回答