11

私はこの「ViewstateChunking」という言葉を聞き続けています。ビューステートチャンキングとは何ですか?

そして、それはASP.NETページでどのように機能していますか?

4

2 に答える 2

16

ページのViewStateが非常に大きくなると、一部のファイアウォールとプロキシが巨大なViewStateサイズを含むページへのアクセスを妨げるため、問題になる可能性があります。この目的のために、ASP.NETはViewStateチャンキングメカニズムを導入しています。したがって、ASP.NETでは、web.configセクションのMaxPageStateFieldLengthプロパティを使用して、ViewStateの単一の非表示フィールドを複数に分割できます。

MaxPageStateFieldLengthプロパティが正の数に設定されている場合、クライアントブラウザに送信されるビューステートは複数の非表示フィールドに分割されます。

MaxPageStateFieldLengthプロパティを負の数(デフォルト)に設定すると、ビューステートフィールドをチャンクに分割しないでください。MaxPageStateFieldLengthを小さい数値に設定すると、パフォーマンスが低下する可能性があります。

前のサンプルViewState:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"value="/wEPDwUKLTk2Njk3OTQxNg9kFgICAw9kFgICCQ88KwANAGQYAQUJR3Jp
ZFZpZXcxD2dk4sjERFfnDXV/hMFGAL10HQUnZbk=" />

次に、web.configで設定します。

<pages maxPageStateFieldLength="40">

後のサンプルViewState:

<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT"value="3" />
<input type="hidden" name="__VIEWSTATE"
id="__VIEWSTATE" value="/wEPDwUKLTk2Njk3OTQxNg9kFgICAw9kFgICCQ88" />
<input type="hidden" name="__VIEWSTATE1"
id="__VIEWSTATE1" value="KwANAGQYAQUJR3JpZFZpZXcxD2dk4sjERFfnDXV/" />
<input type="hidden" name="__VIEWSTATE2"
id="__VIEWSTATE2" value="hMFGAL10HQUnZbk=" /> 

お役に立てば幸いです。

于 2012-09-05T19:27:50.180 に答える
4

ASP.NET状態管理の新機能から-MSDN

ビューステートデータの量が多すぎる場合、ビューステートチャンクはデータを自動的にチャンクに分割し、データを複数の非表示フォームフィールドに配置します。

なぜビューステートチャンキングが必要なのですか?

これがViewStateOverivewからの抜粋です-MSDN

もう1つの重要な考慮事項は、非表示フィールドのデータ量が多くなると、一部のプロキシとファイアウォールがそれらを含むページへのアクセスを妨げることです。最大量はファイアウォールとプロキシの実装によって異なる可能性があるため、大きな非表示フィールドは散発的な問題を引き起こす可能性があります。この問題を回避するために、ViewStateプロパティに格納されているデータの量がページのMaxPageStateFieldLengthプロパティで指定された値を超える場合、ページはビューステートを複数の非表示フィールドに分割して、個々のフィールドのサイズをファイアウォールが拒否するサイズよりも小さくします。

于 2012-05-02T12:43:38.027 に答える