2011-10-26 9 views
2

を解読のConnectionString。私の問題は解読されています。暗号化と復号化に標準のコードを使用していますが、web.configが変更されています。ローカルでは正常に動作します.Web.configを変更すると保存できますが、それでも実行されますが、リモートサーバーにアップロードすると動作しません。は、私はC#/ ASPアプリケーションのWeb.configの特定の部分の暗号化と復号化について読んでてきたと私は自分のアプリケーションのweb.configのたconnectionStringを暗号化することに成功しています

私は取得していますエラーが

構成エラーの説明です:エラーは、この要求を処理するために必要な設定ファイルの 処理中に発生しました。 以下の特定のエラーの詳細を確認し、 設定ファイルを適切に変更してください。

パーサーエラーメッセージ:プロバイダー 'RsaProtectedConfigurationProvider'を使用して解読できませんでした。プロバイダからのエラーメッセージ: 不良データ

Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); 
ConfigurationSection section = config.GetSection("connectionStrings"); 
if (section.SectionInformation.IsProtected) 
{ 
    section.SectionInformation.UnprotectSection(); 
    config.Save(); 
} 

を解読

try 
{ 
    Configuration config = WebConfigurationManager.OpenWebConfiguration("~"); 
    ConfigurationSection section = config.GetSection("connectionStrings"); 
    if (!section.SectionInformation.IsProtected) 
    { 
     section.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider"); 
     config.Save(); 
    } 
    catch (Exception ex) 
    { 

    } 

の暗号化、私はいつでもページが読み込ま復号化メソッドを呼び出しますが、それは動作しませんし、それは私を与えます上記のエラー。

私はホストサーバーにアクセスできません。したがって、コマンドラインを使用することは選択肢ではありません。

+1

興味があるだけを持つべきではない、なぜあなたは手動であなたのアプリに接続文字列を復号化する必要がありますか?'WebConfigurationManager.ConnectionStrings'にアクセスするだけで、暗号化されていればあなたのために設定ファイルを解読することができます。 – csm8118

+0

それは私に手渡されたデザインだけでした。私はちょうどそれをするコードを改訂しています。私はC#コードの背後にあるConnectionStringをASP SQLDataSourceに割り当てています。 – ReiRei

+0

私はコード内でこれを割り当てようとしましたが、まだエラーが発生しています。私は、テスト目的のASPページの1つに対してpage_load中にコードを配置しました。 – ReiRei

答えて

1

は同じ復号鍵がローカルに持っているリモートサーバー上で利用可能であることを確認してください。これはmachine key elementになります。

+0

のようなものですが、リモートサーバーへのアクセス権がありません。それ以外の方法や、サーバーにファイルをインポートすることを含まない接続文字列を暗号化する方法はありますか? – ReiRei

+0

リモートWeb.configにmachineKey設定を追加するだけです。あなたはそれにアクセスできますか?そうでない場合は修正できません。 – SliverNinja

+0

私はそれにアクセスでき、今はマシンキーコードを追加しています。私はそれをテストします。 4GuysGonnaRollaは、私が彼らの記事を読んでいたときにそれを言及しなかった。 =/ – ReiRei

1

あなたはcreate and export an RSA Key Containerあなたはまだコンテナをインポートするために、リモートサーバーにアクセスする必要がありますすることができます。

machineKey要素がここではBTWと関連しているとは思いません。 MSDNから:ローカルマシンのスコープ(useMachineContainer "真")と

キーコンテナは隠しフォルダに格納されている%でALLUSERSPROFILE%\アプリケーションデータ\マイクロソフト\暗号化\ RSA \いるMachineKeys

0

私は」シナリオを推測すると、Web.configをホスティングプロバイダ/リモートサーバにプッシュする前にローカルで暗号化しようとしています。この質問に対するSteve Rowbothamの答えは、開発マシンとリモートサーバーの両方で同じRSAキーコンテナが必要なため、リモートでローカルに暗号化して解読できる必要があります。

あなたは別のルートを取ると、あなたの展開プロセスの一部として、web.configファイルを暗号化することはできますか? MsDeployを使用して、デプロイ時に構成ファイルの暗号化を処理し、必要な場合はサンプルコードを提供することができます。

また、ときにアプリケーション(Global.asaxの中のApplication_Startイベント中)が最初にロードしますが、web.configファイルのconnectionStringsセクションが暗号化されているかどうかを確認し、それを暗号化することができます。あなたが...手動でweb.configファイルを復号化するために

+0

MsDeployの使用方法がわかりません。リモートサーバーと何か関係がある場合は、リモートサーバー上で何かを変更することは不可能です。そのような変更を要求する赤いテープだけが、アプリケーションのために割り当てられた時間以上かかるでしょう。 – ReiRei

+0

それで、基本的にリモートサーバー上の何かを変更するのは、画像の外ですか?私は上記のApplication_StartイベントでconnectionStringを暗号化しようとします。そうすれば、あなたのアプリケーションは暗号化を処理し、それ以外のものは必要ありません。 – csm8118

関連する問題