2010-11-18 27 views
0

Mon application appelle RemotingConfiguration.Configure() pour configurer .NET Remoting. Mais puisque j'ai besoin que l'attribut portName de l'élément channels soit différent chaque fois que l'application est exécutée, je dois configurer ce paramètre particulier par programmation.Modifier les paramètres après avoir appelé RemoteConfiguration.Configure (configFile)?

Cela semble très simple (et est probablement - mais j'ai cherché Google toute la journée pour une réponse).

Jusqu'à présent, j'ai:

RemotingConfiguration.Configure(Program.ConfigFilePath, false); 

IChannel[] regChans = ChannelServices.RegisteredChannels; 
IpcChannel ipcChannel = (IpcChannel)ChannelServices.GetChannel(regChans[0].ChannelName); 

Le débogueur me montre que ipcChannel._serverChannel._prop serait la table de hachage à laquelle je dois ajouter une entrée comme ["portName"] = uniquePortName, mais je ne peux pas voir comment accéder et modifier cette .

Je sais que je pourrais toujours mettre au rebut le fichier * .config et faire le tout par programmation, mais je ne veux vraiment pas perdre les avantages d'avoir la plupart des paramètres facilement modifiables.

Est-il trop tard pour modifier un objet IpcClientChannel une fois que RemotingConfiguration.Configure() est revenu? Évidemment, je pourrais probablement écrire ma propre version de RemotingConfiguration.Configure(), mais cela ne semble pas être la bonne façon de faire les choses non plus.

Répondre

0

Je pense avoir établi que ce que je voulais faire n'était pas possible.

Vous pouvez soit utilisation RemotingConfiguration.Configure()ou quelque chose comme:

IDictionary channelProperties = new Hashtable(); 
    channelProperties.Add("authorizedGroup", "Everyone"); 
    channelProperties.Add("portName", "Client-" + Guid.NewGuid().ToString()); // Unique port name 
    IpcChannel channel = new IpcChannel(channelProperties, null, null); 
    ChannelServices.RegisterChannel(channel); 

Vous ne pouvez pas mélanger et assortir. Au moins, cela semble être le cas.

(Bien sûr, vous pouvez toujours lire ces paramètres du fichier * .config, mais le point est que vous devez explicitement le code pour toutes les options que vous pouvez soutenir.)