Frage

RemotingConfiguration.Configure() Meine Anwendung Anrufe .NET Remoting einzurichten. Aber da ich das portname Attribut des Kanal Elements muß jedes Mal anders sein die Anwendung ausgeführt wird, habe ich programmatisch diese besondere Einstellung konfigurieren.

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

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 wäre die Hash-Tabelle, auf die ich brauche einen Eintrag wie ["portName"] = uniquePortName hinzufügen, aber ich kann einfach nicht sehen, wie man den Zugang und modifizieren.

Ich weiß, ich könnte immer die * .config-Datei Schrott und macht die ganze Sache programmatisch, aber ich wirklich will nicht die Vorteile wegzuwerfen die meisten Einstellungen, die leicht bearbeitet werden.

Ist es zu spät ein IpcClientChannel Objekt zu ändern, sobald RemotingConfiguration.Configure() zurückgekehrt ist? Offensichtlich konnte ich wahrscheinlich meine eigene Version von RemotingConfiguration.Configure() schreiben, aber das scheint nicht, wie der richtige Weg, Dinge zu tun, entweder.

War es hilfreich?

Lösung

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

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

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

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top