2010-11-18 2 views
0

Мое приложение вызывает RemotingConfiguration.Configure(), чтобы настроить .NET Remoting. Но поскольку мне нужно, чтобы атрибут portName элемента каналов был различным при каждом запуске приложения, я должен настроить этот конкретный параметр программно.Изменить настройки после вызова RemoteConfiguration.Configure (configFile)?

Звучит очень просто (и, вероятно, есть - но я искал Google весь день для ответа).

До сих пор у меня есть:

RemotingConfiguration.Configure(Program.ConfigFilePath, false); 

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

отладчик показывает мне, что ipcChannel._serverChannel._prop будет хэш-таблица, в которой нужно добавить запись, такую ​​как ["portName"] = uniquePortName, но я просто не могу понять, как получить доступ и изменить это ,

Я знаю, что всегда мог бы отказаться от файла * .config и сделать все это программно, но я не хочу отбрасывать преимущества того, что большинство настроек легко редактируются.

Слишком поздно модифицировать объект IpcClientChannel после того, как RemotingConfiguration.Configure() вернулся? Очевидно, я мог бы написать свою собственную версию RemotingConfiguration.Configure(), но это не похоже на правильный способ делать то же самое.

ответ

0

Я думаю, что я установил, что то, что я хотел сделать, невозможно.

Вы можете либо использовать RemotingConfiguration.Configure()или что-то вроде:

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

Вы не можете смешивать и сочетать. По крайней мере, похоже, это так.

(Конечно, вы все равно можете прочитать любой из этих параметров из файла * .config, но вам нужно явно указать все параметры, которые вы, возможно, захотите поддержать.)

Смежные вопросы