1

新しく作成された AppDomains で共有/使用されるように、 Application.exe.config から AppSettings を共有したいと思います。以下に示すように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;
    }
}

実行可能ファイル (つまり、メインの appdomain) から app.config の appsetting の値を返します。

于 2009-07-27T23:29:18.693 に答える