تعديل الإعدادات بعد استدعاء remoteconfiguration.configure (configfile)؟

StackOverflow https://stackoverflow.com/questions/4215664

سؤال

مكالمات طلبي RemotingConfiguration.Configure() لإعداد .NET عن بعد. ولكن نظرًا لأنني بحاجة إلى أن تكون سمة PortName لعنصر القنوات مختلفة في كل مرة يتم فيها تشغيل التطبيق ، يجب أن أقوم بتكوين هذا الإعداد المحدد بشكل برمجي.

يبدو الأمر بسيطًا جدًا (وربما هو - لكنني كنت أبحث عن 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(), ، لكن هذا لا يبدو أنه الطريقة الصحيحة لفعل الأشياء أيضًا.

هل كانت مفيدة؟

المحلول

أعتقد أنني أثبتت أن ما أردت فعله غير ممكن.

تستطيع أيضاً استعمال 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 ، ولكن النقطة هي أنه يتعين عليك أن ترمز بشكل صريح لجميع الخيارات التي قد ترغب في دعمها.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top