Мое веб-приложение называет внешний dll. В dll я хочу получить доступ к значению specifiedPickupDirectory pickupDirectoryLocation в разделе system.net/mailSettings/smtp. Как я могу захватить его из кода dll?
Что-то как
System.Configuration.ConfigurationSettings.GetConfig("configuration/system.net/mailSettings/smtp/specifiedPickupDirectory/pickupDirectoryLocation")
но это не работает
Вы можете использовать :
public string GetPickupDirectory()
{
var config = ConfigurationManager.GetSection("system.net/mailSettings/smtp") as SmtpSection;
return (config != null) ? config.SpecifiedPickupDirectory : null;
}
используйте это:
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
Думаю, вы могли бы просто использовать свойство PickupDirectoryLocation .
// if .NET 4.0 don't forget that SmtpClient is IDisposable
SmtpClient client = new SmtpClient();
string pickupLocation = client.PickupDirectoryLocation;
Таким образом, вы не используете магические строки в своем коде, и это избавляет вас от беспокойства, если в будущих версиях фреймворка этот атрибут изменит имя или расположение в файле конфигурации.