Tengo un código heredado que almacena el servidor SMTP, nombre de usuario, contraseña en la sección system.net/mailSettings/smtp
de Web.config.Leyendo system.net/mailSettings/smtp desde Web.config en entorno de confianza medio
Se usa para leerlos, así:
Configuration c = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
MailSettingsSectionGroup settings = (MailSettingsSectionGroup)c.GetSectionGroup("system.net/mailSettings");
return settings.Smtp.Network.Host;
Pero esto no era cuando tenía que implementar en un entorno de confianza medio.
Así que después de la respuesta de this question, me volvió a escribir a utilizar GetSection()
así:
SmtpSection settings = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
return settings.Network.Host;
Pero todavía me está dando una SecurityException en la confianza media, con el siguiente mensaje:
Request for ConfigurationPermission failed while attempting to access configuration section 'system.net/mailSettings/smtp'. To allow all callers to access the data for this section, set section attribute 'requirePermission' equal 'false' in the configuration file where this section is declared.
Así que probé este atributo requirePermission
, pero no puedo encontrar dónde ponerlo.
Si lo aplico al nodo <smtp>, obtengo un ConfigurationError: "Atributo no reconocido 'requirePermission'. Tenga en cuenta que los nombres de los atributos distinguen mayúsculas y minúsculas."
Si lo aplico al nodo <mailSettings>, sigo recibiendo la SecurityException.
¿Hay alguna forma de llegar a esta sección de configuración programáticamente bajo confianza media? ¿O debería simplemente renunciar a él y mover la configuración a <appSettings>?
cada vez que tenía que establecer que no tenía necesidad de "leerlo". Simplemente creando un nuevo SmtpClient() usaría la configuración en el web.config. – turtlepick