2013-06-04 44 views
0

我有应用程序(突然想到把它叫做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,它需要从配置文件中读取配置信息。

您应该添加一个带有<configuration>元素的test.exe.config文件。配置系统将使用此文件并忽略空的test.config文件。

+0

没有。文件被称为test.config(没有.exe)。而这个配置文件不属于这个应用程序。它没有被添加到解决方案中。它只是用于其他目的的配置文件位于同一目录。 – majk86

+0

@ majk86 - 发布堆栈跟踪。 – Joe

+0

谢谢乔。我很好奇为什么它读取不属于这个应用程序的配置文件?只是bcs它叫做test.config?如果这个配置文件没有添加到解决方案,有没有办法关闭读配置文件?无论如何标记为已接受的答案。 – majk86

0

尝试使用sqlconnection()的参数化构造函数。传递连接字符串以获得更安全的一面。您的应用程序将不会取决于

+0

无论如何都会崩溃。新的SqlConnection(“服务器='服务器';用户='用户';密码='密码';”) – majk86

+0

这不是一个有效的连接字符串? http://connectionstrings.com/ – khellang

+0

怎么这么?像魅力一样工作。 – majk86