2012-03-13 15 views
0

私はasp .netアプリケーションを持っています。私はこのコードを開発サーバーに導入する責任がありました。提供されたパッケージを使用してコードをデプロイし、インストールが成功しました。しかし、私がログインページを見せようとすると、次のメッセージでサーバエラーが発生しています。asp .net web.configの状態表示オプション

viewstate MACの検証に失敗しました。このアプリケーションがWebファームまたはクラスタによってホストされている場合は、< machineKey>構成で同じvalidationKeyおよび検証アルゴリズムが指定されていることを確認してください。 AutoGenerateはクラスタ内では使用できません。

enableviewstateとenableviewstatemac = falseを設定すると、コードを実行してすべてのページを表示できます。私はビューの状態について知っていますが、この分野に関する深い知識はありません。誰かがビューの状態を有効にして、セキュリティ関連の問題を妥協することなくアプリケーションを実行する方法を教えてもらえますか?ビューステートと組み合わせて検証キーを使用することに関する深い知識は持っていません。

また、このアプリケーションは現在生産中であり、今後もこれを維持する責任があります。ですから、私に与えられたパッケージは、web.configのビューステートを削除せずに本番環境で動作するので、完璧に動作するはずです。どんな助けもありがたいです

+0

どのような種類のviewstateストレージを使用していますか?それはsql、クライアント、セッションに保存されますか? – linkerro

+0

@linkerro SQLにはありません。あなたが使用する通常のビュー状態です。それは隠された変数としてクライアントに格納されます。それがデフォルトのviewstatwがするものなのかどうかはわかりません。しかし、デフォルトのviewstateが使用されていることを確認してください。 – SARAVAN

答えて

1

これは可能ですが、サーバーごとにランダムに生成されるのではなく、すべてのサーバーで同じvalidationKeyを共有する必要があります。この記事をチェックしてください:http://blogs.msdn.com/b/rich_crane/archive/2004/05/12/130693.aspx

あなたが何か書くことがあります。

<machineKey 
validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7 
       AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"   
decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F" 
validation="SHA1" 
decryption="AES" 
/> 

値にすると、選択したアルゴリズムに依存します。ランダムな文字列を使用するか、System.Security.*クラスを使用してカスタム文字列を生成することができます。 MSDNのthis articleの詳細については、これらのすべての内容について詳しく説明しています。

+0

あなたの答えをありがとう。私の開発サーバーのケースを考えてみましょう。その1つのサーバー。それでおしまい。では、web.configで検証キー属性を設定するようアドバイスしますか?あなたは私にサンプルを提案できますか?通常、この検証キーはサーバーによって生成されるものですが、web.configファイルで手動で設定します。キーの値を与えているのですか、それともプログラムを使って生成されていますか? – SARAVAN

+0

例を追加し、別のリンクに回答を追加しました。通常はサーバーによって自動的に生成されます。ファームを使用していない場合は、web.configで固定されたものを指定する必要はありません。ホストを確認することができます。おそらく、負荷を分散するためにファームを使用しています。 –

関連する問題