在部署asp.net Web应用程序时,在DAL类库中修改连接字符串设置的首选方法是什么?

时间:2009-07-18 21:01:28

标签: c# asp.net deployment web-applications connection-string

我部署了我的asp.net web app项目,该项目引用了我的DAL类库。部署后,如何更改DAL库中的连接字符串? DAL代码忽略了我的web.config连接字符串并尝试使用app.config值。

我以为我可以编辑与类库关联的配置文件,但我找不到。暂时我编辑了连接字符串并重新编译并重新部署了库。

是否有一个选项或方法来设置项目文件,它根据在调试模式下编译而不是执行发布编译来更改连接字符串的值。 在引用类库的Web应用程序中处理连接字符串的推荐方法是什么?

澄清: 一些数据集和L2S类(.dbml)也使用DAL库连接字符串,我不知道如何更改它们以引用位于Web应用程序项目库外部的web.config文件。

目前使用此代码解决我的L2S类问题:

public partial class MyDataContext 
{
    partial void OnCreated()
    {

        ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings["PrimaryConnectionString"];

        if (cs != null)
        {
            this.Connection.ConnectionString = cs.ConnectionString;
        }
    }
}

3 个答案:

答案 0 :(得分:2)

通常,我让顶级项目通过web.config或app.config来定义它;通过指定应用程序应包含名为“FOO”的连接字符串,或者(更好)允许调用应用程序传递(连接字符串)连接键,连接字符串或与dll的连接。

然后你主要只是编辑web.config,就像正常...

答案 1 :(得分:2)

我通常将字符串放在web.config文件中,让一个类(可能是用于引用web.config中的设置的全局类)引用它,并使用以下行:

class Globals
{
    static string ConnectionString =
        ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString;
}

并在其他地方使用它,如:

IApartmentRepository apartmentRepository = new
    ApartmentRepository(Globals.ConnectionString);

这也是Saif Khan在回答中的建议。

至于基于编译模式更改连接字符串,Visual Studio 2010支持此功能,请参阅Visual Web Developer团队博客中的Web Deployment: Web.Config Transformation。我不认为Visual Studio 2008可以开箱即用,但也许可以使用某种构建脚本来完成。

答案 2 :(得分:0)

我不相信有推荐的方式,而是一种首选方式。一些存储连接字符串在web.config文件中,而一些存储在注册表或machine.config中,而一些存储在极端并远程存储...是的,我已经看到了。

我自己看到和使用的最常见的存储是存储在web.config中。在我的DAL对象中,我调用了连接字符串

的web.config文件

string connStr = ConfigurationManager.ConnectionStrings [“myString”]。ConnectionString

基于app编译模式自动更改连接字符串,我从未见过。您可能必须将该检查放入DAL本身以检查调试模式是打开还是“关闭”。这将需要web.config文件中的2个连接字符串条目。