C # Читайте <system.net> <mailSettings>в web.config из внешних DLL - PullRequest
7 голосов
/ 16 июля 2010

Мое веб-приложение вызывает внешнюю DLL. Внутри dll я хочу получить доступ к указанному значению pickupDirectoryLocation указанного PickupDirectory в разделе system.net/mailSettings/smtp. Как я могу получить его из кода DLL?

Что-то вроде

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

но это не работает

Ответы [ 3 ]

17 голосов
/ 16 июля 2010

Вы можете использовать:

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

    return (config != null) ? config.SpecifiedPickupDirectory : null;
}
6 голосов
/ 16 июля 2010

Полагаю, вы можете просто использовать свойство PickupDirectoryLocation .

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

Таким образом, вы не используете магические строки в своем коде, и вам остается меньше беспокоиться, если в будущих версиях платформы этот атрибут изменит имя или расположение в файле конфигурации.

0 голосов
/ 16 июля 2010

используйте это:

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

...