Sí. Si su aplicación tiene permiso para cambiar archivos en la carpeta de la aplicación - actualice el archivo *.config
, por operaciones de IO de archivo o haciendo "sección update
/save
/refresh
". Esta solución tiene una lógica directa: ¿quiere tener una configuración remota? Obténgalo desde el control remoto, actualice local y tenerlo.
muestra: Digamos que usted ha almacenado el grupo de su sección de WCF (<bindings>
, <behaviors>
.. etc) en el archivo wcfsections.test.config
(por supuesto, cualquier fuente remota es posible) y quiere configuración conf "sobrecarga". A continuación, la actualización configration/guardar/actualizar el código se parece a:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationSectionCollection sections = ServiceModelSectionGroup.GetSectionGroup(config).Sections;
sections.Clear();
string fileName = ((GeneralSettings)ConfigurationManager.GetSection("generalSettings")).AppConfigServiceModelSectionFile;
XDocument doc = XDocument.Load(fileName);
var xmlGroup = (from x in doc.Descendants("system.serviceModel") select x).FirstOrDefault();
string[] sectionsInUpdateOrder = { "bindings", "comContracts", "behaviors", "extensions", "services", "serviceHostingEnvironment", "client", "diagnostics" };
foreach (string key in sectionsInUpdateOrder)
{
var e = (from x in xmlGroup.Elements(key) select x).FirstOrDefault();
if (e != null)
{
ConfigurationSection currentSection = sections[e.Name.LocalName];
string xml = e.ToString();
currentSection.SectionInformation.SetRawXml(xml);
}
}
config.Save();
foreach (string key in sectionsInUpdateOrder)
ConfigurationManager.RefreshSection("system.serviceModel/" + key);
Nota: el orden de las actualizaciones es importante para el subsistema de validación WCF. Si lo actualiza en orden incorrecto, puede obtener excepciones de validación.
A veces "No" es la respuesta correcta :-) –
Un extracto de http://msdn.microsoft.com/en-us/library/system.configuration.configuration.aspx ilustra la necesidad de una ruta "física" : "La instancia de clase de configuración representa la vista combinada de la configuración de todos los archivos de configuración que se aplican a una entidad física específica" –