Вытащите адрес электронной почты из appSettings - PullRequest
0 голосов
/ 30 июня 2011

Я пытаюсь получить адрес электронной почты из раздела appSettings файла app.config.Каждый раз, когда я запускаю тест, reportRecipients имеет значение Null.Кто-нибудь может понять, что я делаю не так?

  <appSettings>
    <add key="Overdue_Report_Recipients" value="myemail@email.com"/>
  </appSettings>

string reportRecipients = ConfigurationManager.AppSettings["Overdue_Report_Recipients"];

Спасибо

Редактировать: это для проекта, который не является веб-приложением.Это часть Решения, в котором большинство проектов - это веб-приложения, а этот - сервис.извините за путаницу с тегом asp.net, я удалил его.

У меня есть другое значение, сохраненное в настройках приложения, и я могу получить данные из него

<add key="Sweeper_Notify_When_None_Overdue" value="false"/> 

bool sendWhenNoneOverdue = 
                Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["Sweeper_Notify_When_None_Overdue"]);

ОТВЕТ: я выполнял свой тест в отдельном проекте, и тест считывал файл конфигурации в тестовом проекте, а не app.config в проекте, который я тестировал.Мне пришлось скопировать настройки в конфиг в тестовом проекте, и затем тест сработал.

Ответы [ 3 ]

2 голосов
/ 30 июня 2011

Используя ASP.NET, раздел <appSettings> должен находиться в файле web.config, а не app.config, как вы описали.

Когда вы звоните по номеру ConfigurationManager.AppSettings["some key"] со своего веб-сайта или веб-приложения asp.net, он будет искать в файле web.config.Если вы сохранили свой ключ в файле app.config, поэтому он возвращается с нулевым значением.

При желании вы можете сохранить настройки приложения в отдельном файле из файла web.config.Для этого в вашем файле web.config введите:

<configuration>
  <appSettings file="someSettingsFile.config" />
  ...
</configuration>

Затем в someSettingsFile.config:

<appSettings>
    <add key="Overdue_Report_Recipients" value="myemail@email.com"/>
</appSettings>

Я подозреваю, что вы просто неправильно указали расположение appSettingsфайл.Просто переместите его на web.config, и все будет в порядке.

0 голосов
/ 05 июля 2011

Я выполнял свой тест в отдельном проекте, и тест считывал из файла конфигурации в тестовом проекте, а не app.config в проекте, который я тестировал. Мне пришлось скопировать настройки в конфиг в тестовом проекте, а затем тест сработал.

0 голосов
/ 30 июня 2011
var reportRecipients = ConfigurationManager.AppSettings["Overdue_Report_Recipients"].ToString();

Обновление.

Я только что заметил в своем собственном коде, что нет необходимости в .ToString () и что у вас там должно работать нормально.

Просто чтобы подтвердить, web.config должен быть похож на;

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="Overdue_Report_Recipients" value="myemail@email.com"/>
  </appSettings>
</configuration>
...