2013-06-04 48 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