تعديل الإعدادات بعد استدعاء remoteconfiguration.configure (configfile)؟
-
26-09-2019 - |
سؤال
مكالمات طلبي 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 ، ولكن النقطة هي أنه يتعين عليك أن ترمز بشكل صريح لجميع الخيارات التي قد ترغب في دعمها.)