J'ai un code hérité qui stocke le serveur SMTP, le nom d'utilisateur, le mot de passe dans la section system.net/mailSettings/smtp
du fichier Web.config.Lecture de system.net/mailSettings/smtp à partir de Web.config dans un environnement de confiance moyenne
Il les lisait comme ceci:
Configuration c = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
MailSettingsSectionGroup settings = (MailSettingsSectionGroup)c.GetSectionGroup("system.net/mailSettings");
return settings.Smtp.Network.Host;
Mais ce périclite quand je devais déployer dans un environnement de confiance moyen.
Ainsi, suite à la réponse de this question, je réécrite à utiliser GetSection()
comme ceci:
SmtpSection settings = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
return settings.Network.Host;
Mais il me donne encore un SecurityException sur la confiance moyenne, avec le message suivant:
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.
J'ai donc essayé cet attribut requirePermission
, mais je ne sais pas où le mettre.
Si je l'applique au noeud <smtp>, j'obtiens une erreur ConfigurationError: "Attribut non reconnu 'requirePermission'" Notez que les noms d'attribut sont sensibles à la casse. "
Si je l'applique au nœud <mailSettings>, je reçois toujours le SecurityException.
Y a-t-il un moyen d'accéder à cette section de configuration par programme de confiance moyenne? Ou devrais-je simplement abandonner et déplacer le paramètre dans <appSettings>?
Chaque fois que j'avais que la mise en je n'ai pas besoin de "lire". Créer simplement un nouveau SmtpClient() utiliserait les paramètres du web.config. – turtlepick