由于Request参数,我可以更改web.config连接字符串吗?

时间:2012-04-10 09:31:09

标签: c# .net

某些事情如:

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

是否可以在.NET上使用?

2 个答案:

答案 0 :(得分: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的任何更改都将重置应用程序,导致其所有用户都丢失 - 应用程序池会在文件更改时重新启动。

答案 1 :(得分: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