2

LUW DB にアクセスする Studio 2010 C# アプリケーション。web.config を使用するのではなく、コード ビハインド ファイルで DB Conncetion 設定を構築すると、エラーが発生します。パスワードを保存および取得するサードパーティ製品があります。

古い web.config ファイル メソッドは現在、次のように DB 接続を確立します。

web.config ファイル内:

<add name="myDBConnect" connectionString="Database=mydbname;User    
ID=myuserid;Password=abcxyz" providerName="IBM.Data.DB2"/>

コード ビハインド ファイルでは、DB 接続を開くために以下が実行されます。

ConnectionStringSettings settings = WebConfigurationManager.ConnectionStrings["myDBConnect"];
ConnectionString = settings.ConnectionString;
ConnectionStringSettingsCollection settings = ConfigurationManager.ConnectionStrings;
        if ((settings != null))
        {
            foreach (ConnectionStringSettings cs in settings)
            {
                returnValue = cs.ProviderName;
            }
        }

上記のロジックは正常に動作しますが、次のようにサードパーティ製品から適切なパスワードを取得した後、接続文字列を動的に構築しようとしています:

(注: connPW は、サードパーティ製品から取得したパスワードです)

ConnectionStringSettings settings = "Database=" + mydbname + ";User ID=" + myuserid + ";Password=" + connPW + " providerName=IBM.Data.DB2";

このコード行は次のエラーを受け取ります: 「型 'string' を 'System.Configuration.ConnctionStringSettings' に暗黙的に変換できません」

設定を定義するときに、このエラーを回避する方法を教えてください。ありがとう

4

3 に答える 3

3

ConnectionStringSettings;は必要ありません。文字列に直接接続する必要があります。

DbConnectionStringBuilderまた、コード内のインジェクションの脆弱性を修正する必要があります。

于 2013-07-09T15:11:28.897 に答える
1

これを試して...

   ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString = "your connection string";

上記のコードを実行すると、構成が読み取り専用であるため、システムは「構成は読み取り専用です」というエラーをスローします。
この方法で実行できます。

  var settings = ConfigurationManager.ConnectionStrings["ConnectionStringName"];
    var Reset = typeof(ConfigurationElement).GetField(
                  "_bReadOnly", 
                  BindingFlags.Instance | BindingFlags.NonPublic);
    Reset .SetValue(settings, false);
    settings.ConnectionString = "Data Source=Something";
于 2014-11-24T07:36:13.930 に答える