Tôi có một số mã được thừa kế lưu trữ máy chủ SMTP, tên người dùng, mật khẩu trong phần system.net/mailSettings/smtp
của Web.config.Đọc system.net/mailSettings/smtp từ Web.config trong môi trường tin cậy trung bình
Nó được sử dụng để đọc chúng như vậy:
Configuration c = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
MailSettingsSectionGroup settings = (MailSettingsSectionGroup)c.GetSectionGroup("system.net/mailSettings");
return settings.Smtp.Network.Host;
Nhưng đây là thất bại khi tôi đã phải triển khai đến một môi trường tin cậy trung bình.
Vì vậy, sau câu trả lời từ this question, tôi viết lại nó để sử dụng GetSection()
như vậy:
SmtpSection settings = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
return settings.Network.Host;
Nhưng nó vẫn đem lại cho tôi một SecurityException trên sự tin tưởng Trung bình, với thông báo sau:
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.
Vì vậy, tôi đã cố gắng thuộc tính này requirePermission
, nhưng không thể tìm ra nơi để đặt nó.
Nếu tôi áp dụng nó vào nút <smtp>, tôi nhận được một ConfigurationError: "Thuộc tính không được công nhận 'requirePermission'. Lưu ý rằng tên thuộc tính phân biệt chữ hoa chữ thường."
Nếu tôi áp dụng cho nút <mailSettings>, tôi vẫn nhận được SecurityException.
Có cách nào để nhận được phần cấu hình này theo chương trình dưới sự tin tưởng trung bình không? Hoặc tôi có nên bỏ cuộc và chuyển cài đặt thành <appSettings>?
Bất cứ khi nào tôi đã thiết lập rằng tôi không cần phải "đọc nó". Chỉ cần tạo một SmtpClient mới() sẽ sử dụng các thiết lập trên web.config. – turtlepick