無効な viewstate です。に苦戦
元々、windows server 2003 IIS6.5で動いてるシステムを
windows server 2008 R2 IIS7.5に移植した時のお話。
稼動して半日、お昼休み明けに大量のExceptionが発生!!
System.Web.UI.ViewStateException: 無効な viewstate です。
System.Web.HttpException: viewstate MAC の検証フィールドです。このアプリケーションが Web Farm またはクラスタによってホストされている場合、<machineKey> 構成が同一の validationKey および検証アルゴリズムを指定していることを確認してください。AutoGenerate をクラスタで使用することはできません。
クラスタなんてしてないし、どうしたものかと。。。
現象を再確認
- 出力されるExceptionは上記2つ
- 作業し続けるとエラーは出ずに、30分以上放置してから再度画面を触るとエラーが発生
- POST時のみ
- でない場合もある
解決に至るまで
- MAC検証無効でよくね?
検証エラーのViewState受け入れちゃダメでしょ、とつっこまれこの手は使えず
チナミニ、下記みたいな注意もあるので、これは安易に手をつけなくて良かったかもしれない。
重要 : 問題の診断に役立てるときにだけ、ビューステートの MAC 機能をオフにしてください。ビューステートの MAC をオフにしたままにして問題を回避しないでください。そうした場合は、セキュリティ ホールをもたらす可能性があります。詳細については、以下の MSDN Web サイトを参照してください。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnaspp/htm/SecNetch08.asp
- 時間が立つとでるエラーだから、クッキーやらアイドルセッションやらの時間延ばせば。。。
意味無かった。。。
- formタグにactionとかあるんじゃ
ソース見たけどそんなものは無かった
終わってみて
なんかすごい時間掛けて調べた割りに、やってみれることは少なかった。
このエラーがでて困っている人がいたら。
@IT:.NETエンタープライズWebアプリケーション開発技術大全 Webアプリケーションの状態管理
クラスタならこの辺がんばるらしいし
(僕はクラスタでは無いのでろくに見てないけど)
何?このエラー ( ホームページ ) - とあるプログラマーのグチ - Yahoo!ブログ
formタグにactionとか書いてないか見直してみたり
それでも直らないなら、アプリケーションプール変えて見るといいかもね