2

私のソリューションには 2 つのプロジェクトがあります。リポジトリ クラスを介して Entity Framework .edmx ファイルからデータを生成するクラス ライブラリ。App.Config ファイル connectionString は、2 番目の ASP.Net 4.0 Web フォーム プロジェクトの Web.config と一致します。

テスト サーバーにデプロイするときに、両方の connectionString を変更して、テスト データベース (DataSource=TestDB) を指すようにします。ライブ サイトにデプロイするときに、ライブ データベース (DataSource=LiveDB) を指すように両方を変更します。

Site.Master の上部にあるラベル コントロールに、"You are connected to the TEST database" という赤い文字で表示されます。ラベルの .Visible プロパティを条件付きで切り替えますif (context.Connection.DataSource.Contains("TestDB"))

開発中に、私は奇妙なことに気付きました。Web.config が TestDB を指しているときに、App.config を一致させるのを忘れた (そしてそれが LiveDB を指している) 場合、"connected to TEST" という警告が表示されますが、LiveDB からのデータは表示されます。

これは、リポジトリ (クラス ライブラリ) が App.Config を使用しているが、Web フォーム プロジェクトで作成されたデータ コンテキストが Web.config connectionString を使用していることを示しています。あれは正しいですか?テスト サイトにデプロイし、App.Config を TestDB にポイントするのを忘れると、ライブ データが正しく更新されないのではないかと心配しています。

だから私の質問は、このシナリオでは...常に正確な「テストデータベースに接続」という通知を表示する最良の方法は何ですか?

4

2 に答える 2

4

By default a class library will not be using any app.config file.

It would use the .config file that is in the context of the application using it - in the case of a web application that would be the web.config file.

于 2012-08-17T13:49:17.907 に答える
0

アプリが実行されると、コンテキストが作成されている場所に関係なく、web.configにあるものが使用されます。

(a)ライブWebサーバー以外の場所、または(b)特にテスト場所からのアクセスを防ぐために、ライブアプリケーションにファイアウォールを設定してみませんか?

于 2012-08-17T13:48:20.527 に答える