Posiadam pewien odziedziczony kod, który przechowuje serwer SMTP, nazwę użytkownika, hasło w sekcji system.net/mailSettings/smtp
pliku Web.config.Czytanie system.net/mailSettings/smtp z Web.config w środowisku średniego zaufania
Kiedyś czytać je tak:
Configuration c = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
MailSettingsSectionGroup settings = (MailSettingsSectionGroup)c.GetSectionGroup("system.net/mailSettings");
return settings.Smtp.Network.Host;
Ale to było w przypadku braku kiedy musiałem wdrożyć w środowisku średnim zaufania.
Więc po odpowiedź od this question, przepisałem go używać GetSection()
tak:
SmtpSection settings = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
return settings.Network.Host;
ale nadal daje mi SecurityException na średnim zaufania, z następującym komunikatem:
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.
Tak więc spróbowałem tego atrybutu requirePermission
, ale nie wiem, gdzie go umieścić.
Jeśli zastosuję go do węzła <smtp>, pojawia się błąd ConfigurationError: "Nierozpoznany atrybut" requirePermission ". Zauważ, że w nazwach atrybutów rozróżniana jest wielkość liter."
Jeśli zastosuję ją do węzła 01SmailSettings >, nadal otrzymuję wyjątek SecurityException.
Czy istnieje sposób, aby uzyskać w tej sekcji konfiguracji programowo w ramach średniego zaufania? Czy powinienem po prostu się poddać i przenieść ustawienie do <appSettings>?
Ilekroć miałem, że ustawienie nie muszę się "czytać". Po prostu tworzenie nowego SmtpClient() będzie korzystało z ustawień na web.config. – turtlepick