1

Web アプリケーションの web.config ファイルのappSettingsおよびconnectionStringsセクションを暗号化しました。

これらは、Visual Studio 2010 コマンド プロンプトで入力した 2 つのコマンドです。

aspnet_regiis.exe -pef "connectionStrings" C:\Provider -prov "DataProtectionConfigurationProvider"

aspnet_regiis.exe -pef "appSettings" C:\Provider -prov "DataProtectionConfigurationProvider"

ここで、これら 2 つのコマンドにより、ソリューション ファイルと共にディレクトリに新しい web.config ファイルが作成されました。この web.config ファイルを開きました。このファイルには、元の web.config ファイルの暗号化された appSettings セクションと connectionStrings セクションのみが含まれていました。

次に、Web アプリケーションを開き、元のappSettingsセクションとconnectionStringsセクションを削除して、暗号化されたセクションを貼り付けました。

これは私の web.config ファイルが今どのように見えるかです:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <appSettings configProtectionProvider="DataProtectionConfigurationProvider">
    <EncryptedData>
      <CipherData>
        <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA6h2T0PWsHUC2CPpYvY8QUwQAAAACAAAAAAAQZgAAAAEAACAAAAAdlSIaGrQ1CFjswJi2RxekJ4ZxmRArilsOiqrmUXt6JgAAAAAOgAAAAAIAACAAAACaV/bVjlK60wX9LOFzRsrkbcDjSOT+3Qj0JyUZZszNNSAAAACaQC3oKCPX1gaxZK3ghS6lAMcVwpNpbMpyNpeoiwxap0AAAAD87rr8QUaIQJv2Sc+i+RGWq1+vExAPNjjG1VtWvK4ILsOX88iBRRx0tpAFdNAw0AvGoxUTA7UQGKm7hTHBaAMz</CipherValue>
      </CipherData>
    </EncryptedData>
  </appSettings>
  <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
    <EncryptedData>
      <CipherData>
        <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA6h2T0PWsHUC2CPpYvY8QUwQAAAACAAAAAAAQZgAAAAEAACAAAAB4Y7QqEGRvo9T04hE8hvd3wMvRXqIMa/UJBkOQnMnsbgAAAAAOgAAAAAIAACAAAADnzwxmuoWUQLYJ0/YPUkgvR/xyXDZNaQI4ZrMmACqvaTAAAAC6C0nEhW+g8WHcNJLN5DRi8uNimkG3GyMEajrB33ST7DN49W925xIeMiN3kvyLAcJAAAAAPcgh+jh6RzsfQElj7/e1RNAQEFQykiqYfLbUEMd+qHcfkLCNwe3tczJQDckGH1cT7Y9At16pPfek1bKZeM7YpQ==</CipherValue>
      </CipherData>
    </EncryptedData>
  </connectionStrings>

  <system.web>
    <compilation debug="true" explicit="true" targetFramework="4.0"/>
    <httpCookies httpOnlyCookies="true" requireSSL="true"/>

    <customErrors mode="On" defaultRedirect="DefaultErrorPage.htm">
      <error statusCode="404" redirect="ErrorPage.htm"/>
    </customErrors>

    <trace enabled="false"/>
  </system.web>
</configuration>

私が今抱えている問題は、web.config ファイル (接続文字列など) のデータにアクセスするページを使用しようとすると、null 参照例外が発生することです。

たとえば、次の行は null 参照例外を生成します。

string connection = ConfigurationManager.ConnectionStrings["DB_Connection"].ConnectionString;

どうすればこれを解決できますか?ありがとうございました :)

明確化

この行は、データ保護 API を使用して暗号化する前は完全に機能していました。暗号化後に null 参照例外が発生し始めました。

4

1 に答える 1

1

これを解決したかどうかはわかりませんが、私にとっての解決策は、「C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys」に作成されたマシン キー ファイルへの読み取りアクセスを、アカウント NT AUTHORITY\NETWORK SERVICE。

NullReferenceException は、アプリケーションが暗号化/復号化キーを含むファイルを読み取ることができないために発生しました。

敬具、マーティン

于 2013-10-02T09:54:46.570 に答える