我有一些继承的代码,这些代码存储Web.config的Web.config部分中的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,并提供了以下信息:
试图访问配置部分“system.net/mailSettings/smtp”时,
ConfigurationPermission请求失败。要允许所有调用方访问本节的数据,请在声明此节的配置文件中设置节属性'requirePermission‘等于'false’。
因此,我尝试了这个requirePermission属性,但是不知道将它放在哪里。
如果我将它应用于节点,就会得到一个ConfigurationError:“未识别的属性'requirePermission‘。注意,属性名是区分大小写的。”
如果将其应用于节点,则仍然会得到SecurityException。
是否有任何方法可以在中等信任下以编程方式访问此配置部分?或者我应该放弃它,把设置移到
发布于 2011-01-05 02:46:46
requirePemission属性用于<configSections>分组,该分组与您遇到安全问题的web.config的部分匹配。
此外,您不必实际使用代码读取设置来发送邮件--您只需使用空白的SmtpClient:
new SmtpClient.Send(MyMailMessage);默认情况下,它将使用来自配置部分的设置发送。
发布于 2012-12-13 18:33:30
您可以像一些人建议的那样创建一个SmtpClient,但这有点过了--直接阅读这些章节就可以了。
var section = ConfigurationManager.GetSection("system.net/mailSettings/smtp") as SmtpSection;
var host=section.Network.Host发布于 2012-08-14 03:04:50
这对我来说很好。
var smtp = new System.Net.Mail.SmtpClient();
var host = smtp.Host;
var ssl = smtp.EnableSsl;
var port = smtp.Port;
var credential = new System.Net.Configuration.SmtpSection().Network;
var username = credential.UserName;
var password = credential.Password;https://stackoverflow.com/questions/4599779
复制相似问题