0

私はいくつかの C#.Net Webforms アプリを持っており、かなり大きなビューステートを開発することがあります。以前は、iOS 6 で、ポストバック時に Safari でビューステートが切り捨てられ、アプリケーションが例外をスローするという問題がありました。もちろん、他のすべてのブラウザは影響を受けませんでした。問題を再現できましたが、常に確実に再現できるとは限りません。iOS 6 の Safari が 32k マーク以降または 64k マーク以降の投稿パラメーターを切り落としているかどうかについて、意見が対立していることを発見しました。ビューステートをチャンクに分割することも役に立ちました。投稿全体のサイズが重要です。

公式スペックは謎のようです。おそらく、iOS 7 で状況が変わったのでしょう。この制限がまだ適用されているかどうか、またそれが何であるかを知っている人はいますか?

継承したアプリケーションの多くのページを書き直すことを検討しており、iPad および iPhone ユーザーを満足させるためにビューステートをどれだけ小さく保つ必要があるかを理解しようとしています。もちろん、MVC で書き直すこともできますが、それにはかなりの手間がかかります。

4

1 に答える 1

1

これをテストするために、.NET でページをセットアップしました。Viewstate に 1K のガベージを追加し、現在のサイズをバイト単位で出力するボタンが含まれていました。iOS 6 と 7 の両方の Safari で、viewstate を 100K を超えるサイズまで拡大することができましたが、悪影響はありませんでした。これは、maxPageStateFieldLength を使用してビューステートを小さなチャンクに分割するように設定したかどうかに関係なく同じでした。

ただし、ブラウザーの [戻る] ボタンを多用すると、iOS 6 で無効なビューステート例外をスローするページを取得することができました。これは、Safari モバイルが積極的にキャッシュし、古い要求を使用することが原因である可能性があります。ただし、この特定のバグは iOS 7 で軽減されたようです。場合によっては、ページを再送信するかどうかを尋ねるダイアログ ボックスが表示されるようになりました。その後、不正なビューステート エラーは発生しません。

したがって、リクエスト サイズ自体に制限はないようです。Safari モバイルおよび .Net で無効なビューステート例外をトリガーするには、これと他の要因の組み合わせが必要です。

于 2013-09-20T19:11:45.240 に答える