Ho un codice ereditato che memorizza server SMTP, nome utente, password nella sezione system.net/mailSettings/smtp
di Web.config.Lettura system.net/mailSettings/smtp da Web.config in ambiente trust medio
ha usato per leggerli in questo modo:
Configuration c = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
MailSettingsSectionGroup settings = (MailSettingsSectionGroup)c.GetSectionGroup("system.net/mailSettings");
return settings.Smtp.Network.Host;
Ma questo era mancata quando ho dovuto distribuire in un ambiente di fiducia medio.
Così dopo la risposta da this question, ho riscritto per utilizzare GetSection()
in questo modo:
SmtpSection settings = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
return settings.Network.Host;
ma è comunque mi ha dato una SecurityException sulla fiducia Medio, con il seguente messaggio:
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.
Così ho provato questo attributo requirePermission
, ma non riesco a capire dove metterlo.
Se lo applico al nodo <smtp>, viene visualizzato un errore ConfigurationError: "Attributo non riconosciuto 'requirePermission." Nota che i nomi degli attributi fanno distinzione tra maiuscole e minuscole. "
Se lo applico al nodo > mailSettings , ottengo ancora SecurityException.
C'è un modo per ottenere questa sezione di configurazione in modo programmatico con un livello medio di fiducia? O dovrei semplicemente rinunciarci e spostare l'impostazione in <appSettings>?
Ogni volta che ho avuto che l'impostazione non ho bisogno di "leggerlo". Basta creare un nuovo SmtpClient() per usare le impostazioni sul web.config. – turtlepick