如何以编程方式或动态方式在 web.config 文件中设置连接字符串?

How to set connectionstring at web.config file programmatically or dynamically?

我正在尝试创建一个 ASP.NET 网站。我正在使用数据库。要连接数据库,我使用存储在 web.config 文件中的连接字符串,例如

  <connectionStrings>
  <add name="DBConnectionString" 
    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=G:\CarRentalServices\App_Data\CarRentalServiceDB.mdf;Integrated Security=True"/>
  </connectionStrings>

在代码后面

private string _connectionString = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;

因此您可以看到数据库存储在 G:\path\to\db\CarRentalServiceDB.mdf

但现在如果我的朋友想从我这里拿走项目并尝试从他的机器上运行项目,那么他必须在 web.config 处更改 connectionString。假设网站现在在我朋友的机器上位于 D:\path\to\db\foo\CarRentalServiceDB.mdf,那么 connectionString 需要更改。是不是很乏味?

有没有什么方法可以用任何批处理文件或代码动态更改 connectionString,以便它会根据它现在所在的当前目录进行更改?

您可以在 web.config 文件中添加多个连接字符串,然后调用您需要的那个

Web.config 文件

  <connectionStrings>
  <add name="DBConnectionString" 
    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=G:\CarRentalServices\App_Data\CarRentalServiceDB.mdf;Integrated Security=True"/>
  <add name="DBConnectionStringTwo" 
    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=D:\path\to\db\foo\CarRentalServiceDB.mdf;Integrated Security=True"/>
  </connectionStrings>

连接字符串代码

//Connection String 1 
private string _connectionString = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;

//Connection String 2 
private string _connectionString2 = ConfigurationManager.ConnectionStrings["DBConnectionStringTwo"].ConnectionString;

您应该使用 |DataDirectory|令牌:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx

<connectionStrings>
 <add name="DBConnectionString" 
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\App_Data\CarRentalServiceDB.mdf;Integrated Security=True"/>