6

何らかの理由で、私のアプリケーションのビューステートは巨大になりました(約1400万文字)。読み込み時間は約1分追加されます。ページが最終的に読み込まれると(頻繁ではありません)、誰かがフォームを送信するたびにサーバーがクラッシュしますPost size exceeded allowed limits.

いきなり現れました。フィールドは追加せず、ページにJavaScriptを追加しました。

ビューステートのチャンクアウトを確認するように言われました。グーグルは私にこれをするように言った:

<pages maxPageStateFieldLength="1024">

...だから今、巨大な隠しフィールドの代わりに、100個の非常に大きな隠しフィールドのようなものがあります。それは私が探していたものではありません。

なぜ.NETはこのようなことをするのでしょうか?どうすればこれを修正できますか?

4

2 に答える 2

7

ユーティリティを使用してビューステートをデコードし、実際にビューステート内に何が含まれているかを把握できるようにすることをお勧めします(明らかに、そこには必要のない情報がたくさんあるためです)。

ビューステートデコーダーを使用すると、ビューステートに予期していないものが含まれていることを確認できます。次に、コードを変更するか、問題のあるコントロールを削除するか、またはEnableViewState="false"有効にすべきではないコントロールのビューステートを(属性を使用して)選択的に無効にすることができます。

于 2009-08-24T17:14:42.423 に答える
3

コントロールは、ビューステートなしでポストバック全体で値を保持することに注意してください。多くの場合、問題なく多くのコントロールのビューステートを無効にできます。特定のコントロールセットのビューステートを無効にするには:

EnableViewState="false"

すべてのグリッドとビューセートを必要としないコントロールにこれを設定すると、サイズが大幅に縮小されます。

于 2009-08-24T17:10:08.313 に答える