2008-09-03 17 views
2

私は以前に問題が発生しています。それを解決する方法についての私の参照を見つけることができません。App.config接続文字列保護エラー

ここが問題です。問題は、我々は販売員の休暇を持っていたある

 config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) 
     If config.ConnectionStrings.SectionInformation.IsProtected = False Then 
      config.ConnectionStrings.SectionInformation.ProtectSection(Nothing) 

      ' We must save the changes to the configuration file.' 
      config.Save(ConfigurationSaveMode.Modified, True) 
     End If 

:私たちは、以下のコードを使用して、当社のクライアントアプリケーションのためのapp.configの接続文字列セクションを暗号化します。古いラップトップは新しい営業担当者になり、新しいユーザーのログインの下でこれを実行しようとするとエラーが発生します。エラーは次のとおりです。

Unhandled Exception: System.Configuration.ConfigurationErrorsException: 
An error occurred executing the configuration section handler for connectionStrings. ---> System.Configuration.ConfigurationErrorsException: Failed to encrypt the section 'connectionStrings' using provider 'RsaProtectedConfigurationProvider'. 
Error message from the provider: Object already exists. 
---> System.Security.Cryptography.CryptographicException: Object already exists 
+2

Vista以上の場合は、管理者として実行していることを確認してください。 –

答えて

1

自分のオリジナルの答えでより洗練された解決策を見つけました。私はちょうどorignallyアプリケーションをインストールし、設定ファイルのconnectionStringsがcommadnプロンプトで暗号化され、.NET Frameworkのディレクトリに移動させEUSER番目としてログインし、

aspnet_regiis -pa "NetFrameworkConfigurationKey" "{domain}\{user}" 

を実行する場合、私はそれが他のユーザーを与えましたRSA暗号化キーコンテナにアクセスするためのアクセス許可を与え、それは他のユーザのために働きます。

私はdevのブログでこの問題をブログに書きましたが、ここで見つけたと思っていましたので、ここに追加したいと思います。このスレッドでは、devのブログポイントへのリンクも追加します。

+0

これは、ASP .NETアプリケーションからそのエラーを取得する場合にも役立ちます。 aspnet_Regiis -pa "NetFrameworkConfigurationKey ASPNET ありがとう – Jay

0

権限の問題のようです。問題の(新規)ユーザーにapp.configファイルへの書き込み権限がありますか?以前のユーザーはこの問題を隠していた可能性のあるローカル管理者またはパワーユーザーでしたか?

+0

新しいユーザーのために、Clickonceのインストールを使用してアプリをインストールしました。両方のユーザーはPC上の管理グループにいました。私がオンラインで見つけたことから、デフォルトのRSAキーはマシン固有であり、異なるユーザーがapp.configのバージョンを保護するためにそれを使用すると、エラーが発生することが分かります。私はいくつかのユーザー固有のキーを使用して保護する必要があると思う、今だけを見つける方法が必要です。 :)返信ありがとう! Mike – MikeScott8

1

だから私はそれを働かせました。

  1. 削除古いユーザーは、セクションが
  2. アプリ走ったすべてのユーザーのマシンキーから
  3. 削除キーファイルを保護されていないとノートパソコンから
  4. リセットのapp.configを占め、それは部分を保護するために許可され

しかし、これはすべてこのユーザーのために働いていました。

今は、PC上の複数のユーザーがアプリケーションを使用できるように、セクションを保護するためにコードを変更する必要があることを知る必要があります。ここに仮想PC(私は来週水曜日まで明日WDWに休暇の後に来る)来る!

私はこのRSA暗号化タイプのものに非常に熟練していないので、正しい方向に向ける助けとなるアドバイス。

1

http://blogs.msdn.com/mosharaf/archive/2005/11/17/protectedConfiguration.aspx#1657603

コピー&ペースト:Naica

によってD

2007年2月12日(月曜日)12:15 AM

再:

を保護された構成を使用して設定ファイルを暗号化ここにあります自分のPC上の2つのセクションを暗号化してWebServerに展開するために行ったすべての手順のリスト。多分それは誰かを助けるでしょう...:

  1. aspnet_regiis -pc "DataProtectionConfigurationProviderKeys" -exp 
    
  2. がconnectionStringsセクションの前にweb.configファイルにこれを追加マシンレベルのRSAキーコンテナを作成するには

    <add name="DataProtectionConfigurationProvider" 
    
         type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, 
    
           Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, 
    
           processorArchitecture=MSIL" 
    
         keyContainerName="DataProtectionConfigurationProviderKeys" 
    
         useMachineContainer="true" /> 
    

    上から<clear />をお見逃しなく!何度もエンコード/デクリメントするときに重要です

  3. これはWeb.Configファイルの先頭にあることを確認してください。 VSで

    <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
    
  4. 保存して閉じWeb.Configファイル(非常に重要!)コマンドプロンプトで

  5. (私のローカルPC)ウィンドウに行く:

    不足していることを追加した場合C:\ WINNT \ Microsoft.NET \ Framework \ v2.0.50727

  6. 暗号化:(アプリケーションのphisicalパスを変更するか、-appオプションを使用することに注意してください。仮想ディレクトリの名前をアプリに与える!私は自分のPC上でVSを使用したので、私は腹を立てるオプションを好みました。パスは、Web.configファイルへのパス)である

    ます。aspnet_regiis -pef "のconnectionStrings" "C:\のBla \のBla \ Blaの" -prov "DataProtectionConfigurationProvider"

    ます。aspnet_regiis -pef "のsystem.web /会員" "C:\のBla \のBla \ Blaの" -prov "DataProtectionConfigurationProvider"

  7. を解読するために(必要な場合にのみ!):

    aspnet_regiis -pdf "connectionStrings" "c:\Bla\Bla\Bla" 
    
    aspnet_regiis -pdf "system.web/membership" "c:\Bla\Bla\Bla" 
    
  8. (!のみ必要な場合)キーコンテナを削除

    aspnet_regiis -pz "DataProtectionConfigurationProviderKeys" 
    
  9. WebServerのサーバー上のWebServer(UATや生産)

    aspnet_regiis -px "DataProtectionConfigurationProviderKeys" \temp\mykeyfile.xml -pri 
    
  10. インポートキーコンテナにローカルPCからそれをエクスポートするために、XMLファイルに上記のキーを保存します。

    aspnet_regiis -pi "DataProtectionConfigurationProviderKeys" \temp\mykeyfile.xml 
    
  11. Webサーバ上のキーへのアクセス権を付与

    aspnet_regiis -pa "DataProtectionConfigurationProviderKeys" "DOMAIN\User" 
    

    IISでASPを参照してください。NETユーザーまたは使用:

    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name 
    
  12. (!必要な場合のみ)、Webサーバ上のキーへのアクセス権を付与を削除

    aspnet_regiis -pr "DataProtectionConfigurationProviderKeys" "Domain\User" 
    
  13. コピーして暗号化されたWeb.configファイルをウェブサーバーに貼り付けます。

関連する問題