1

像这样的东西:

if(Request["connectionToUse"] + "" == "constr1")
    // use a connection string 1
else 
    // use a connection string 2

.NET 上可行吗?

4

2 回答 2

2

在您的中有两个连接字符串,web.config只需引用您要使用的一个:

<connectionStrings>
   <add 
      name="conn1" connectionString="..." 
      providerName="System.Data.SqlClient"
   />
   <add 
      name="conn2" connectionString="..." 
      providerName="System.Data.SqlClient"
   />
</connectionStrings>

if(Request["connectionToUse"] + "" == "constr1")
    return ConfigurationManager.ConnectionStrings["conn1"];
else 
    return ConfigurationManager.ConnectionStrings["conn2"];

更新:

我不建议web.config根据传入的参数写信给你——这不仅看起来会导致安全问题(特别是如果你只是使用传入的参数)。

对 的任何更改都web.config将重置应用程序,导致它的所有用户退出 - 应用程序池在文件更改时重新启动。

于 2012-04-10T09:38:43.267 回答
1

编辑:这可能是一个非常糟糕的主意,正如 Oded 所说,但如果你真的想这样做:

根据请求参数修改webconfig看下面的例子:

string strDevConnection = @"Data Source=DEVELOPMENT\SQLEXPRESS;Initial Catalog=sqlDB;Persist Security Info=True;User ID= ;Password= ";

string strLiveConnection = @"Data Source=PRODUCTION\SQLEXPRESS;Initial Catalog=sqlDB;User id= ;password= ";

Configuration myWebConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
if (Request["connectionToUse"] + "" == "constr1")

{

myWebConfig.ConnectionStrings.ConnectionStrings["constr1"].ConnectionString = strDevConnection; //constr1 is the name of the current connectionstring in the web.config

}

else

{

myWebConfig.ConnectionStrings.ConnectionStrings["constr2"].ConnectionString = strLiveConnection;

}
 myWebConfig.Save(); //Save the changes to web config
于 2012-04-10T09:43:26.870 回答