0

Window_Loadedに次のコードを含むアプリケーション ( test.exeと呼びましょう) があります。

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

それ以上でもそれ以下でもありません。アプリケーションは問題なく動作します。空の構成ファイル ( test.config ) を同じディレクトリにコピーすると、アプリケーションがクラッシュします。

アプリケーション プロジェクトに構成ファイルを追加しませんでした。空の xml ファイルを手動で同じディレクトリにコピーし、名前を .config に変更しただけです (このファイルには xml 宣言のみが含まれており、後で使用されます)。

try-catch を使用して root の欠落に関する例外をキャッチできますが、アプリケーションが数秒後にクラッシュするという問題があります。

SqlConnection がこの構成ファイルを読み取るのはなぜですか? また、例外をキャッチした後でもアプリケーションがクラッシュするのはなぜですか?

4

2 に答える 2

0

設定ファイルの名前はtest.exe.config.

構成ファイルを最初に読み取ろうとしたときに、アプリケーションがクラッシュすることを想像します。あなたの場合、これはインスタンスをインスタンス化するときですSqlConnectionが、他にも多くの方法で発生する可能性があります。

<configuration>要素を構成ファイルに追加します。

編集

この動作を再現し、スタック トレースを調べました。は、設定ファイルから設定情報を読み取る必要がある にDbConnectionPoolCountersアクセスしています。System.Diagnostics.TraceSwitch

test.exe.config要素を含むファイルを追加する必要があります<configuration>。構成システムはこのファイルを使用し、空のtest.configファイルを無視します。

于 2013-06-04T09:18:33.357 に答える
0

sqlconnection() のパラメーター化されたコンストラクターを使用してみてください。安全のために接続文字列を渡します。あなたのアプリケーションは依存しません

于 2013-06-04T08:59:31.497 に答える