当部署ASP.NET Web应用程序时,修改连接字符串设置的首选方法是什么?DAL类库。

3
我部署了一个带有对我的DAL类库的引用的asp.net Web应用程序项目。一旦部署,我该如何更改DAL库中的连接字符串?DAL代码忽略了我的web.config连接字符串并尝试使用app.config值。
我认为我应该能够编辑与类库相关联的配置文件,但找不到这样的文件。临时地,我编辑了连接字符串并重新编译和重新部署了库。
是否有选项或方法可以设置项目文件,在调试模式下编译与进行发布编译时根据需要更改连接字符串的值。在Web应用程序中引用类库时,处理连接字符串的推荐方式是什么?
澄清: DAL库连接字符串也被一些数据集和L2S类(.dbml)所使用,我不知道如何更改它们以引用位于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个回答

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”(网页部署:Web.Config 转换)链接。我认为Visual Studio 2008默认情况下不能做到这一点,但是可能可以使用某种构建脚本来实现。

你需要在类库中添加一个引用到Web项目,才能访问web.config吗? - Breadtruck

2

通常情况下,我会让顶级项目通过web.config或app.config来定义这个问题,可以通过指定应用程序应该包含一个名为“FOO”的连接字符串,或者(更好的方式)允许调用应用程序传递连接键、连接字符串或连接到dll。

然后你只需要像平常一样编辑web.config即可...


我最初是这样做的,但考虑到隔离方面的安全性,我认为将其放入类库中可能更加安全,因此我将其移动到库项目设置中。 - Breadtruck

0

我不认为有一种推荐的方式,但有一种首选的方式。有些人将连接字符串存储在web.config文件中,而有些人将其存储在注册表或machine.config中,还有一些人会走极端并将其远程存储...是的,我见过这种情况。

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

string connStr = ConfigurationManager.ConnectionStrings["myString"].ConnectionString

至于根据应用程序编译模式自动更改连接字符串,我从未见过。您可能需要在DAL本身中放置该检查,以检查调试模式是否已打开或关闭。这将需要在web.config文件中放置2个connectionstring条目。


请查看我的主要问题中的澄清。如何在不传递它的情况下引用类库中的web.config文件,就像Marc Gravell建议的那样? - Breadtruck
导入 system.configuration 命名空间。 - Saif Khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接