web-dev-qa-db-ja.com

IsolateAppsにより、指定された復号化キーに無効な16進文字が含まれる

認証を使用するMVC 4サイトで作業しています。このサイトでは、マシンキーの値を指定する必要があります。私はこれをIISインターフェースを介して「実行時に自動生成」を選択解除し、キー値を生成し、「各アプリケーションに固有のキーを生成する」を選択した

Web.configエントリは次のようになります。

<machineKey decryption="DES" decryptionKey="{hex-key value},IsolateApps" 
    validationKey="{hex-key value},IsolateApps" />;

これは別のWebプロジェクトでは正常に動作するようですが、現在作業中の開発マシンでは「指定された復号化キーに無効な16進文字があります」エラーが発生します(IIS-ExpressおよびIIS 7.5 )。

キー値から",IsolateApps"を削除すると問題は解決しますが、本番環境ではこのオプションが必要なので、デプロイ時にこの問題が発生する場合にのみ削除する必要はありません。

何が得られますか? devボックスは、.net 2.0および.net 4.0を備えたSQL 2008 R2ボックスです。

56
WernerVA

IsolateApps修飾子により、ASP.NETはサーバー上のアプリケーションごとに一意のキーを生成します。これは、実行時にASP.NETにキーを自動生成させる場合にのみ適用されます。

ASP.NETでキーを自動生成せず、代わりにdecryptionKey="{hex-key value}"を使用してキーを指定する場合、ASP.NETで各アプリケーションに異なるキーを使用する方法は、単に異なるキーを指定することです各アプリケーションのWeb.configで。

IIS config GUIを使用すると、無効なIsolateApps修飾子とともに明示的なキーを持つWeb.configを作成できますが、これは構成のバグですGUI。

119
Joe Daley

Web.configのmachineKey要素(compatibilityMode = "Framework20SP1")に次を追加することで問題を修正できます リンクを参照

6
JDeVil

これは、web.configにmachineKey行を追加し、以下に示すようにキーを指定することで修正できます(もちろん、このキーは簡単に推測できます)。

<configuration>
 <system.web>
  <machineKey decryptionKey="0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0" validationKey="0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF00123456789ABCDEF0123456789ABCDEF0123456789ABCDEF00123456789ABCDEF0123456789ABCD" />
 </system.web>
</configuration>
2
Jrud