我的应用程序调用{{1}}来设置.NET Remoting。但由于每次运行应用程序时都需要channels元素的portName属性不同,我必须以编程方式配置此特定设置。
这听起来非常简单(可能是 - 但我整天都在搜索谷歌的答案)。
到目前为止,我有:
RemotingConfiguration.Configure()
调试器向我显示RemotingConfiguration.Configure(Program.ConfigFilePath, false);
IChannel[] regChans = ChannelServices.RegisteredChannels;
IpcChannel ipcChannel = (IpcChannel)ChannelServices.GetChannel(regChans[0].ChannelName);
将是我需要添加条目的哈希表,例如ipcChannel._serverChannel._prop
,但我根本看不到如何访问和修改它。
我知道我总是可以废弃* .config文件并以编程方式完成所有事情,但我真的不想丢掉大部分设置可以轻松编辑的好处。 / p>
在["portName"] = uniquePortName
返回后修改IpcClientChannel
对象为时已晚?显然我可以编写自己的RemotingConfiguration.Configure()
版本,但这似乎也不是正确的做法。
答案 0 :(得分: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文件中读取这些设置中的任何一个,但重点是你必须为你可能想要支持的所有选项显式编码。)