2010-11-18 11 views
0

Meine Anwendung ruft RemotingConfiguration.Configure() auf, um .NET Remoting einzurichten. Aber da das Attribut portName des Elements channels bei jeder Ausführung der Anwendung unterschiedlich sein muss, muss ich diese Einstellung programmatisch konfigurieren.Einstellungen nach dem Aufruf von RemoteConfiguration.Configure (configFile) ändern?

Es klingt sehr einfach (und wahrscheinlich ist - aber ich habe Google den ganzen Tag für eine Antwort gesucht).

Bisher habe ich:

RemotingConfiguration.Configure(Program.ConfigFilePath, false); 

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

Der Debugger zeigt mir, dass ipcChannel._serverChannel._prop die Hash-Tabelle sein würde, an dem ich einen Eintrag wie ["portName"] = uniquePortName hinzufügen müssen, aber ich kann einfach nicht sehen, wie diese zugreifen und diese ändern .

Ich weiß, ich könnte immer die * .config Datei verschrotten und die ganze Sache programmatisch tun, aber ich wirklich möchte nicht die Vorteile der meisten Einstellungen leicht bearbeitbar wegwerfen.

Ist es zu spät, um ein IpcClientChannel Objekt zu ändern, sobald RemotingConfiguration.Configure() zurückgegeben wurde? Natürlich könnte ich wahrscheinlich meine eigene Version von RemotingConfiguration.Configure() schreiben, aber das scheint auch nicht der richtige Weg zu sein, Dinge zu tun.

Antwort

0

Ich denke, ich habe festgestellt, dass das, was ich tun wollte, nicht möglich ist.

Sie können entweder Verwendung RemotingConfiguration.Configure()oder so etwas wie:

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

können Sie nicht mischen und zusammenpassen. Zumindest scheint das der Fall zu sein.

(Natürlich können Sie immer noch eine dieser Einstellungen aus der * .config Datei lesen, aber der Punkt ist, dass Sie explizit für alle Optionen kodieren müssen, die Sie unterstützen möchten.)