2009-07-27 13 views
1

Je voudrais partager mes AppSettings depuis Application.exe.config pour être partagé/utilisé par les AppDomains nouvellement créés. Je crée AppDomains comme indiqué ci-dessousComment partager les appsettings entre différents AppDomains dans .NET

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

Ai-je besoin d'avoir des mesures supplémentaires pour avoir ConfigurationManager.AppSettings [key] retourner les mêmes valeurs que l'AppDomain d'origine?

Répondre

0

Non, vous n'avez rien de spécial à faire.

En utilisant le code suivant pour isntantiate un objet serveur:

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

var result = instance.ReadConfig(); 

de la classe suivante dans un ensemble séparé:

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


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

     return foo; 
    } 
} 

retourne la valeur de la appsetting dans le app.config de la exécutable (ie le domaine principal).

Questions connexes