実行時に Web アプリケーションの別のデータベースを切り替えようとしています。
シナリオ 1 つの asp.net Web アプリケーションと、さまざまな顧客用のさまざまなデータベースがあります。接続文字列、特定の顧客 ID とパスワードのマッピング テーブルを保持している共通データベースから特定の接続文字列値を切り替えようとしています。 gin 共通データベースから接続文字列を取得し、web.config ファイルの接続文字列セクションを編集して、実行時に選択した接続文字列を置き換えます。ログインイベントに次のコードを追加してこれを行っています
conectionString = cString;
Configuration openWebConfiguration = WebConfigurationManager.OpenWebConfiguration("~");
ConnectionStringsSection sections = openWebConfiguration.GetSection("connectionStrings") as ConnectionStringsSection;
if (sections != null)
{
sections.ConnectionStrings["ConnectionStringName"].ConnectionString = conectionString;
ConfigurationManager.RefreshSection("ConnectionStringName");
openWebConfiguration.Save();
}
.problemを使用してページ上の接続文字列を読んでいますConfigurationManager
が、Web 構成ファイルが変更されていますが、使用して別のページを呼び出した後Response.Redirect
、例外がスローされます。例外は「コードが最適化されているか、ネイティブ フレームがオンになっているため、式を評価できません」コール スタックの一番上に「これはクロス スレッド環境で発生するものだとわかりました。私の質問は
- 上記の例外の正確な理由は何ですか?
- Asp.net のどのページ ライフ サークルが Web 構成ファイルから設定を読み取りますか?
- 上記のシナリオを実装できる適切な方法は何ですか?