1

次のようなもの:

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

.NETで可能ですか?

4

2 に答える 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 に答える