ТОЛЬКО для WPF Designer: NullReferenceException при загрузке строки подключения из app.config - PullRequest
2 голосов
/ 20 июля 2010

Пожалуйста, помогите, ради моих не выдернутых волос ...

Следующая строка кода:

this._connectionString = ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString;

причиняет мне невыразимое количество горя.

Он находится в пользовательском элементе управления, в настоящее время в событии Loaded элемента управления, но я также попробовал конструктор и просто инициализировал поле значением, когда оно объявлено. Всякий раз, когда я делаю это, дизайнер WPF устанавливает соответствие на любом экране, который использует указанный пользовательский элемент управления.

Сам код прекрасно компилируется и работает без проблем. Но это превращается в реальное препятствие для разработки, когда он вообще не может использовать дизайнер. Кто-нибудь знает, что может вызвать это, и намек на хорошую практику, чтобы избежать этого в будущем? Я подозреваю, что это как-то связано с попыткой доступа к ConfigurationManager, но я не могу понять, где поставить строку, чтобы остановить ее.

Спасибо.

PS: Visual Studio 2010 Premium

Ответы [ 3 ]

1 голос
/ 20 июля 2010

Когда вы работаете во время разработки, вам следует избегать загрузки этого.Вместо этого заполните значение другим подходящим значением по умолчанию:

if (DesignerProperties.GetIsInDesignMode(this))
    this._connectionString = "Default";
else
{
    this._connectionString = ConfigurationManager
                              .ConnectionStrings["SqlConnectionString"]
                              .ConnectionString;
}
1 голос
/ 20 июля 2010

Разработчик, вероятно, смотрит не на конфигурацию вашего приложения, а скорее на конфигурацию его текущего хост-приложения (VS), и поэтому ConfigurationManager.ConnectionStrings ["SqlConnectionString"] возвращает null во время разработки.

0 голосов
/ 02 февраля 2015

Это ограничение похоже на то, что видно в приложениях MVC, когда Web.Config не создается при разработке.Вот ... WPF делает то же самое, когда App.Config не присутствует во время разработки.

...