2010-07-16 82 views
7

我的web應用程序調用外部dll。在dll中,我想訪問system.net/mailSettings/smtp部分中指定的PickupDirectory pickup pickup目錄位置值。我如何從dll代碼中獲取它?C#從外部DLL讀取<system.net><mailSettings>在web.config中

喜歡的東西

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

但不起作用

回答

16

您可以使用:

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

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

太好了 - 非常感謝。我調整了PickupDirectoryLocation。 public string GetPickupDir() var config = System.Configuration.ConfigurationManager.GetSection(「system.net/mailSettings/smtp」)as System.Net.Configuration.SmtpSection; return(config!= null)? config.SpecifiedPickupDirectory.PickupDirectoryLocation:null; } – DEH 2010-07-16 14:54:47

6

我想你可以簡單地使用PickupDirectoryLocation屬性。

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

這樣,你是不是在你的代碼中使用魔法字符串,它使一個少一點擔心,如果在框架的未來版本中此屬性配置文件中更改名稱或位置。

+1

好點,SmtpClient自動使用配置設置。 – 2010-07-16 15:09:26

0

使用本:

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

則:

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

,那麼你就必須

//settings.Smtp.SpecifiedPickupDirectory; 

當然這種訪問也應在System.Net找到。 Mail.SmtpClient.PickupDirectoryLocation屬性