У меня есть унаследованный код, в котором хранятся SMTP-сервер, имя пользователя и пароль в разделе system.net/mailSettings/smtp
файла Web.config.
Он читал их так:
Configuration c = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
MailSettingsSectionGroup settings = (MailSettingsSectionGroup)c.GetSectionGroup("system.net/mailSettings");
return settings.Smtp.Network.Host;
Но это было неудачно, когда мне пришлось развертывать среду среднего доверия.
Итак, следуя ответу этого вопроса, я переписал его, чтобы использовать GetSection()
следующим образом:
SmtpSection settings = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
return settings.Network.Host;
Но он по-прежнему дает мне защиту SecurityException on Medium, со следующим сообщением:
Запрос на конфигурацию не удалось при попытке доступа раздел конфигурации 'System.net/mailSettings/smtp. к разрешить всем вызывающим абонентам получать доступ к данным для этого раздела задайте раздел атрибут 'requirePermission' равен "false" в файле конфигурации где этот раздел объявлен.
Итак, я попробовал этот атрибут requirePermission
, но не могу понять, куда его поместить.
Если я применил его к <smtp> node, я получаю ConfigurationError: "Unrecognized attribute" requirePermission ". Обратите внимание, что имена атрибутов чувствительны к регистру."
Если я применил его к <mailSettings> node, я все еще получаю SecurityException.
Есть ли какой-либо способ программно настроить этот раздел конфигурации под средним доверием? Или я должен просто отказаться от него и переместить параметр в <appSettings> ?