2

我的解决方案有两个项目。一个类库,用于通过存储库类从 Entity Framework .edmx 文件生成数据。App.Config 文件 connectionString 与我的第二个 ASP.Net 4.0 Web 表单项目中的 Web.config 匹配。

当部署到测试服务器时,我修改了 BOTH connectionStrings 以指向测试数据库 (DataSource=TestDB)。当部署到实时站点时,我将两者都修改为指向实时数据库(DataSource=LiveDB)。

在 Site.Master 的顶部,我在标签控件中以红色字母显示“您已连接到 TEST 数据库”。我有条件地切换标签的 .Visible 属性if (context.Connection.DataSource.Contains("TestDB"))

在开发过程中,我发现了一些奇怪的东西。当 Web.config 指向 TestDB 时,如果我忘记让 App.config 匹配(并且它指向 LiveDB),则会出现“已连接到 TEST”警告,但会显示来自 LiveDB 的数据。

这告诉我存储库(类库)使用 App.Config,但在 Web 表单项目中创建的数据上下文使用 Web.config 连接字符串。那是对的吗?我担心如果我部署到测试站点并忘记将 App.Config 指向 TestDB,实时数据将被错误地更新。

所以我的问题是,在这种情况下......显示始终准确的“连接到测试数据库”通知的最佳方式是什么?

4

2 回答 2

4

默认情况下,类库不会使用任何app.config文件。

它将使用在.config使用它的应用程序上下文中的文件 - 在将成为web.config文件的 Web 应用程序的情况下。

于 2012-08-17T13:49:17.907 回答
0

当应用程序运行时,它使用 web.config 中的那个,无论上下文是在哪里创建的。

为什么不在您的实时应用程序上设置防火墙以防止从(a)除实时网络服务器之外的任何地方访问,或(b)尤其是您的测试位置?

于 2012-08-17T13:48:20.527 回答