Файл конфигурации и инициализация SqlConnection
У меня есть приложение (давайте назовем это test.exe) со следующим кодом в Window_Loaded:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
SqlConnection sqlConnection = new SqlConnection();
}
Не больше, не меньше. Приложение работает без проблем. Теперь, если я скопирую пустой файл конфигурации (test.config) в тот же каталог, приложение вылетает.
Я не добавил конфигурационный файл в проект приложения, это просто пустой XML-файл, скопированный вручную в тот же каталог и переименованный в.config (этот файл содержит только декларацию XML и будет использоваться позже).
Я могу поймать исключение об отсутствии рута с помощью try-catch, но проблема в том, что приложения все равно вылетают через несколько секунд.
Почему SqlConnection читает этот файл конфигурации? И почему оно вылетает из моего приложения даже после отлова исключения?
2 ответа
Я предполагаю, что ваш файл конфигурации называется test.exe.config
,
Я хотел бы представить, что приложение падает, когда оно впервые пытается прочитать свой файл конфигурации. В вашем случае это когда вы создаете SqlConnection
например, но есть много других способов, которыми это могло бы произойти.
Добавить <configuration>
элемент в ваш файл конфигурации.
РЕДАКТИРОВАТЬ
Воспроизводил это поведение и исследовал трассировку стека. DbConnectionPoolCounters
получает доступ к System.Diagnostics.TraceSwitch
, который должен прочитать информацию о конфигурации из файла конфигурации.
Вы должны добавить test.exe.config
файл с <configuration>
элемент. Система конфигурации будет использовать этот файл и игнорировать ваш пустой test.config
файл.
Попробуйте использовать параметризованный конструктор sqlconnection(). передать строку подключения для более безопасной стороны. Ваше приложение не будет зависеть от