2010-07-16 31 views
7

Ứng dụng web của tôi gọi một dll bên ngoài. Trong dll tôi muốn truy cập giá trị pickupPirupYirectory pickupDirectoryLocation trong phần system.net/mailSettings/smtp. Làm thế nào tôi có thể lấy nó từ bên trong mã dll?C# Đọc <system.net><mailSettings> trong web.config từ dll bên ngoài

Something như

System.Configuration.ConfigurationSettings.GetConfig("configuration/system.net/mailSettings/smtp/specifiedPickupDirectory/pickupDirectoryLocation") 

nhưng điều đó không làm việc

Trả lời

16

Bạn có thể sử dụng:

public string GetPickupDirectory() 
{ 
    var config = ConfigurationManager.GetSection("system.net/mailSettings/smtp") as SmtpSection; 

    return (config != null) ? config.SpecifiedPickupDirectory : null; 
} 
+0

Tuyệt vời - cảm ơn rất nhiều. Tôi đã tinh chỉnh để phân phối PickupDirectoryLocation. chuỗi công cộng GetPickupDir() { var config = System.Configuration.ConfigurationManager.GetSection ("system.net/mailSettings/smtp") dưới dạng System.Net.Configuration.SmtpSection; trả lại (config! = Null)? config.SpecifiedPickupDirectory.PickupDirectoryLocation: null; } – DEH

6

Tôi đoán bạn chỉ có thể sử dụng PickupDirectoryLocation tài sản.

// if .NET 4.0 don't forget that SmtpClient is IDisposable 
SmtpClient client = new SmtpClient(); 
string pickupLocation = client.PickupDirectoryLocation; 

Bằng cách này bạn không sử dụng chuỗi ma thuật trong mã của mình và điều này sẽ khiến bạn lo lắng hơn nếu các phiên bản trong tương lai thay đổi tên hoặc vị trí trong tệp cấu hình.

+1

Điểm tốt, SmtpClient sẽ tự động sử dụng cài đặt cấu hình. –

0

sử dụng này:

using System.Configuration; 
using System.Web.Configuration; 
using System.Net.Configuration; 

thì:

Configuration config = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath); 
MailSettingsSectionGroup settings = (MailSettingsSectionGroup)config.GetSectionGroup("system.net/mailSettings"); 

sau đó bạn sẽ có quyền truy cập vào

//settings.Smtp.SpecifiedPickupDirectory; 

Tất nhiên điều này cũng nên được tìm thấy trong System.Net. Mail.SmtpClient.PickupDirectoryLocation property

Các vấn đề liên quan