0

上周我遇到了一个新问题。由于我的项目的性质和可用预算,我一直在开发的一个小型 Intranet Web 应用程序既是测试服务器又是实时服务器,以及提供页面并且是 sql 服务器。这将至少持续到项目结束主要开发周期。现在该项目有真正的用户,但我正在继续开发,我复制了数据库以有一个安全的副本来处理,不会对实时业务数据和网站的开发副本造成破坏。

一切都很好,直到我在站点的测试副本上发现异常,任何使用 sql 数据源的东西都正确地从测试数据库中提取它的数据,但是任何从后面代码中触发的存储过程中获取它的数据的东西都是拉它的来自实时数据库的数据。

我的困惑来自这样一个事实,即所有存储过程和 sql 数据源最终都指向 web.config 文件中相同的连接字符串设置以知道连接到哪里。我只是根据我是否将最新更改上传到测试站点或实时站点来重命名数据库名称。

我的问题归结为,为什么在每个站点中使用一个连接字符串,我的测试站点会以一种方式访问​​数据,从一个数据库获取数据,而访问另一个从另一个数据库获取数据?

这是我的连接字符串,它们都指向,名称/密码当然会因为明显的原因而改变,但结构是完整的。

<add name="db_Connection" connectionString="Data Source=SERVERNAME;Initial Catalog=DATABASE_live;Persist Security Info=False;User ID=USERID;Password=password" providerName="System.Data.SqlClient"/>

我在 appsettings 中添加了一个键来引用数据库连接的名称,因此如果需要,我可以轻松更改它的名称,而无需为 SProc 调用背后的代码编辑数十页。

<add key="defaultDB" value="db_Connection" />

我是否违反了一些我不知道的规则,或者是否还有其他事情需要我注意和更改,以便在我继续开发活动站点时拥有一个真正的测试环境?

编辑此项目在 ASP.NET 2.0 VB 中,修复了代码显示。

找到解决方案我已经找到了解决方案,感谢您的指点,他们让我在别处寻找。当我将站点复制到不同的位置进行测试时,我忘记更新站点位置的 appsetting 密钥,这导致调用存储过程的以下部分显然从实时站点的 web.config 中获取数据。

System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(pubvar_webConfig)
4

3 回答 3

1

更改开发数据库上的用户名和密码。如果您的问题仍然存在,那么您可能在其他不知道的地方设置了连接字符串。

于 2009-02-20T00:24:54.783 回答
0

通过 IIS 在不同的应用程序池中运行这两个应用程序可能是值得的(如果您还没有或当然!)。这应该消除应用程序级别的测试和生产站点之间的任何并发问题。

恕我直言,具有共享测试/生产环境的独立应用程序池在任何时候都是很好的做法。

于 2009-02-20T00:19:41.507 回答
0

我会搜索您的解决方案中的所有文件,以确保您没有在某个地方硬编码数据库名称之一。也许在设计器文件中?

于 2009-02-20T00:27:47.633 回答