我有一些继承的代码,它将SMTP服务器,用户名,密码存储在Web.config的system.net/mailSettings/smtp部分中。
它曾经读过这样的:
Configuration c = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath); MailSettingsSectionGroup settings = (MailSettingsSectionGroup)c.GetSectionGroup("system.net/mailSettings"); return settings.Smtp.Network.Host;
但是当我不得不部署到中等信任环境时,这是失败的。
所以按照this question的答案,我重写了如此使用GetSection():
SmtpSection settings = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp"); return settings.Network.Host;
但它仍然给我一个中等信任的SecurityException,并显示以下消息:
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.
所以我尝试这个requirePermission属性,但是无法确定哪里放置它。
如果我将它应用到< smtp>节点,我得到一个ConfigurationError:“无法识别的属性’requirePermission’。请注意,属性名称区分大小写。
如果我将它应用到< mailSettings>节点,我仍然得到SecurityException。
有什么办法可以在中等信任下编程的这个配置部分或者我应该放弃它,并将设置移动到< appSettings>?