59

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

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

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

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

キー値から削除",IsolateApps"すると問題は解決しますが、本番環境でこのオプションをオンにする必要があるため、展開時にこの問題が発生するためだけに削除したくありません。

何を与える?開発ボックスは、.net 2.0 および .net 4.0 を含む SQL 2008 R2 ボックスです。

4

3 に答える 3

128

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

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

IIS 構成 GUI を使用すると、修飾子と一緒に明示的なキーを使用して Web.config を作成できますがIsolateApps、これは無効です。私の意見では、構成 GUI のバグです。

于 2013-03-14T03:44:14.283 に答える
7

この問題は、web.config の machineKey 要素 (compatibilityMode="Framework20SP1") に次を追加することで解決できます。リンクを参照してください。

于 2013-03-28T12:39:42.220 に答える
2

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

<configuration>
 <system.web>
  <machineKey decryptionKey="0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0" validationKey="0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF00123456789ABCDEF0123456789ABCDEF0123456789ABCDEF00123456789ABCDEF0123456789ABCD" />
 </system.web>
</configuration>
于 2016-11-01T21:32:10.373 に答える