La lecture system.net/mailSettings/smtp à partir du Web.config en niveau de confiance Moyen de l'environnement
J'ai quelques hérité de code qui stocke serveur SMTP, le nom d'utilisateur, mot de passe dans la system.net/mailSettings/smtp
section du site Web.config.
Il utilisé pour lire comme suit:
Configuration c = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
MailSettingsSectionGroup settings = (MailSettingsSectionGroup)c.GetSectionGroup("system.net/mailSettings");
return settings.Smtp.Network.Host;
Mais ce n'était pas quand j'ai eu à déployer à un niveau de confiance moyen de l'environnement.
Faire à la suite de la réponse de cette question, je l'ai réécrit pour utiliser GetSection()
comme suit:
SmtpSection settings = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
return settings.Network.Host;
Mais c'est encore de me donner une SecurityException sur un niveau de confiance Moyen, avec le message suivant:
Demande de ConfigurationPermission
échec lors de la tentative d'accès à
section de configuration
'system.net/mailSettings/smtp'. Pour
permettre à tous les appelants pour accéder aux données
pour cette section, la section jeu
l'attribut 'requirePermission' égalité
"false" dans le fichier de configuration
d'où cette section est déclarée.
J'ai donc essayé cette requirePermission
attribut, mais ne peut pas trouver où le mettre.
Si je l'applique à la <smtp> nœud, je reçois un ConfigurationError: "non reconnu attribut "requirePermission'. Notez que les noms d'attributs sont sensibles à la casse."
Si je l'applique à la <mailSettings> nœud, j'ai toujours l'SecurityException.
Est-il possible de l'obtenir à cette section de configuration par programmation sous un niveau de confiance moyen? Ou devrais-je abandonner et de passer à la mise en <appSettings>?
- Chaque fois que j'ai eu cette configuration je n'ai pas besoin de "lire". Simplement créer une nouvelle SmtpClient() serait d'utiliser les paramètres sur le web.config.
Vous devez vous connecter pour publier un commentaire.
La requirePemission attribut va sur le
<configSections>
groupement qui correspond à la partie de fo le web.config vous rencontrez le problème de sécurité.en outre, vous n'avez pas à lire les paramètres à l'aide de code pour envoyer un mail, vous pouvez simplement utiliser un vide SmtpClient:
il va l'envoyer en utilisant les paramètres de l'sections de configuration par défaut.
new SmtpClient()
plutôt que d'essayer d'extraire manuellement l'hôte et le port et le nom d'utilisateur et le mot de passe fonctionne parfaitement!Vous pouvez créer un SmtpClient comme certains l'ont suggéré, mais c'est un peu overkill - il suffit de lire les sections directement.
Cela fonctionne très bien pour moi.
Joies de codage hein... toujours 1000 façons à la peau d'un poisson
null
- il ne semble pas refléter ce que vous avez dans votre site Web.config...Pour obtenir les paramètres de la boîte aux sections seulement créer les objets messagerie.
Config: