我有一个运行良好的MVC网站,直到我把它移到测试中,它在那里崩溃了。经过一些调查如果发现因为我将'model'拆分为自己的单独项目,该模型使用了自己的app.config中的connectionstring(而不是网站的web.config)。
所以我在某个地方找到了一篇文章(现在找不到链接),显示我如何使用web.config - 很棒,我让网站进入测试阶段。
不幸的是,下次我尝试再次在测试中实现该网站时,我遇到了同样的问题,过了一会儿发现我的模型的app.config重新编写了连接字符串DOH!
这里的最佳做法是什么?我需要将数据库配置放在一个易于由系统管理员更改的文件中
答案 0 :(得分:2)
据我所知,ASP.NET应用程序永远不会使用app.config。
答案 1 :(得分:1)
如果您的项目同时包含App.config和Web.config文件,那么您需要将它们绑定在一起,以便它们共享连接字符串。这样做很容易。在* .config文件中添加以下行:
<connectionStrings configSource="WebCS.config" />
webcs.config将如下所示:
<connectionStrings>
<add name="YourConnString" connectionString="Data Source=Server;Initial Catalog=YourDB;User ID=SQLID;Password=Password" providerName="System.Data.SqlClient"/>
</connectionStrings>
这将允许您从多个位置引用相同的连接字符串,并使您的开发,测试和部署服务器上的连接字符串变得容易。
更新:如果您正在进行TDD或以其他方式将您的逻辑分离到单独的DLL中,您可能会有两种类型的.Config文件,从而引发您提出的问题。当然,单独的Business Logic DLL是在ASP.NET中创建基于表单的Web应用程序的“最佳实践”。例如,我只在网站本身放置UI代码,然后调用所有业务相关和数据处理逻辑的DLL。这不仅有助于分离问题,而且还使测试变得简单。
答案 2 :(得分:0)