2013-06-04 4 views
0

У меня есть приложение (let`s называют его test.exe) со следующим кодом в Window_Loaded:Конфигурационный файл и SqlConnection инициализации

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    SqlConnection sqlConnection = new SqlConnection(); 
} 

Ничего больше и не меньше. Приложение работает без проблем. Теперь, если я копирую пустой файл конфигурации (test.config) в тот же каталог, сбой приложений.

Я не добавлял конфигурационный файл в проект приложения, это просто пустой файл xml, скопированный вручную в тот же каталог и переименованный в .config (этот файл содержит только объявление xml и будет использоваться позже).

Я могу уловить исключение из-за отсутствия корня с помощью try-catch, но проблема в том, что приложения выходят из строя через несколько секунд.

Почему SqlConnection читает этот файл конфигурации? И почему это сбой моего приложения даже после исключения?

+0

Проблема устранена, если вы удалите строку кода с помощью SqlConnection? – mortb

+0

Да. Если я удалю строку SqlConnection, она не сработает. То же самое происходит, если я удаляю/переименовываю test.config. – majk86

ответ

0

Я предполагаю, что ваш файл конфигурации называется test.exe.config.

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

Добавить элемент <configuration> в конфигурационный файл.

РЕДАКТИРОВАТЬ

Репродуцировано это поведение и исследовали трассировки стека. DbConnectionPoolCounters обращается к System.Diagnostics.TraceSwitch, которому необходимо прочитать информацию о конфигурации из файла конфигурации.

Вы должны добавить файл test.exe.config с элементом <configuration>. Затем система конфигурации будет использовать этот файл и проигнорировать ваш пустой файл test.config.

+0

Nope. Файл называется test.config (без .exe). И этот файл конфигурации не относится к этому приложению. Он не добавляется к решению. Это просто файл конфигурации для других целей, расположенных в одном каталоге. – majk86

+0

@ majk86 - отправить трассировку стека. – Joe

+0

Спасибо, Джо. Мне любопытно, почему он читает конфигурационный файл, который не принадлежит этому приложению? Просто bcs это называется test.config? Есть ли способ отключить чтение файла конфигурации, если этот файл конфигурации не добавлен в решение? Во всяком случае, маркировка как принятый ответ. – majk86

0

попытайтесь использовать параметризованный конструктор sqlconnection(). передайте свою строку соединения для более безопасной стороны. ваша заявка не будет зависеть от

+0

Сбой в любом случае. новый SqlConnection («Сервер =« сервер »; пользователь =« пользователь »; пароль = 'пароль';") – majk86

+0

Это недопустимая строка подключения? http://connectionstrings.com/ – khellang

+0

Как так ?? Работает как шарм. – majk86

Смежные вопросы