Question

Mes appels d'application RemotingConfiguration.Configure() pour configurer .NET Remoting. Mais depuis que je besoin de l'attribut portName de l'élément de canaux d'être différent à chaque fois que l'application est exécutée, je dois configurer ce paramètre particulier programatically.

Il semble très simple (et est probablement - mais j'ai cherché Google tous les jours pour une réponse).

Jusqu'à présent je:

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 tout simplement pas voir comment accéder et modifier cela.

Je sais que je pourrais toujours mettre au rebut le fichier * .config et faire la chose programatically, mais je vraiment ne veulent pas jeter les avantages d'avoir la plupart des paramètres facilement modifiable.

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

Était-ce utile?

La solution

Je pense avoir établi que ce que je voulais faire est impossible.

Vous pouvez soit utiliser 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 pourriez vouloir soutenir.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top