1

構成マネージャーに関連する多くのトピックを読みましたが、問題を解決できませんでした。接続文字列と、Web アプリケーションの CLASS LIBRARY からいくつかの appsetting キーを読みたいだけです。

System.Configuration クラスへの参照があります。

これは私のコードです:

using System.Configuration;

...

string constr = ConfigurationManager.ConnectionStrings["cbuddydb"].ConnectionString;
string strUserName = ConfigurationManager.AppSettings["username"];
string strPwd = ConfigurationManager.AppSettings["password"];

しかし、別の構成ファイルから読み取っているようです。私のプロジェクトのweb.configからではありません。読み取った値が間違っているためです。

web.configは以下です:

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>
  <system.data>
    <connectionStrings>
      <clear />
      <add name="cbuddydb" connectionstring=
           "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=myDataBase;Persist Security Info=True;
            User=@username;Password=@password;Option=3" providerName="MySql.Data.MySqlClient" password=""/>
    </connectionStrings>
    <appSettings >
      <clear />
      <add key="username" value ="6/0RUNnSmUBsbdNoCg+9Sw=="/>
      <add key="password" value =""/>
    </appSettings>
  </system.data>
</configuration>
4

1 に答える 1

4

この理由は、構成ファイルの継承によるものです。インデックス 0 の接続文字列は構成ファイルにない可能性がありますが、machine.config などから継承されている可能性があります。ASP.Net 構成ファイルの階層と継承を参照してください: http://msdn.microsoft.com/en -us/library/ms178685.aspx

web.configで次を指定することにより、継承された接続文字列をクリアできます

 <connectionStrings> 
     <clear />  
     <add name=”MyConnString” connectionString=“Whatever“  /> 
  </connectionStrings> 

編集:構成で、connectionStrings および appSettings タグを構成要素のすぐ下に配置します。それらは system.data 要素内にあってはなりません。これらは構成要素の直接の子です。また、providerName の後の余分なパスワード属性を削除します。どのように使用されているかわからないため、接続文字列を検証できません。

<configuration>
  <connectionStrings>
    <clear />
    <add name="cbuddydb"  connectionString=
       "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=myDataBase;Persist Security Info=True;
        User=@username;Password=@password;Option=3" providerName="MySql.Data.MySqlClient"/>
  </connectionStrings>

  <appSettings >        
    <add key="username" value ="6/0RUNnSmUBsbdNoCg+9Sw=="/>
    <add key="password" value =""/>
  </appSettings>

  <system.data>
....

パスワードなど、構成ファイル内の機密情報を暗号化することを検討する必要があります。

于 2013-08-19T10:37:16.197 に答える