连接字符串应存储在n层asp.net应用程序中的何处

bni*_*and 5 asp.net web-config data-access-layer 3-tier n-tier-architecture

民间,

我有一个按名称空间划分的相当n层的ASP.NET项目,但我需要分为三个项目:数据层,中间层和前端。

我这样做是因为...

答:这似乎是正确的做法,并且

B)我在运行ASP.NET托管程序集的单元测试时遇到各种问题。

无论如何,我的问题是,您在哪里保存配置信息?

例如,现在,当实例化新的数据上下文时,我的中间层类(使用Linq到SQL)会自动从web.config中提取其连接字符串信息。

如果我的数据层在另一个项目中,可以/应该使用web.config作为配置信息吗?

如果是这样,单元测试(通常在单独的组件中)将如何提供soch配置信息?

感谢您的时间!

Bra*_*rad 2

我们将它们保存在一个全局“设置”文件中,该文件恰好是 XML。该文件包含所有全局设置,其中之一是指向相应服务器的连接字符串以及用户名和密码。然后,当我的应用程序使用它时,它们会将所需的特定目录(数据库)放入连接字符串中。

我们为每个操作环境(prod、dev、staging 等)都有一个文件版本。然后,通过两个设置——文件路径(带有代表环境的令牌)和环境——我可以选取正确的设置文件。

这还有 30 秒故障转移的好处。只需更改设置文件中的服务器名称并重新启动应用程序(Web),您就可以进行故障转移(当然,如果需要,您必须恢复数据)。

然后,当应用程序启动时,我们将正确的连接字符串写入 web.config 文件(如果不同)。这样,我们就可以通过更改一个 appSettings 值来将网站从 DEV 更改为 PROD。