私が維持しているサイトの1つは、の使用に大きく依存していますViewState
(これは私のコードではありません)。ViewState
ただし、が肥大化している特定のページでは、Safariが"Validation of viewstate MAC failed"
エラーをスローします。
これはSafariでのみ発生するようです。Firefox、IE、Operaはすべて同じシナリオで正常に読み込まれます。
私はChannel9ソリューションを2番目にしていますが、一部のホスト環境ではSafariが上位レベルのブラウザーとは見なされないことにも注意してください。一部のASP.Net機能を利用するには、アプリケーションのブラウザキャップに追加する必要がある場合があります。
これが、ASPメニューコントロールを使用するクライアントのサイトで発生したいくつかの頭痛の種の根本的な原因でした。
私の最初の呼び出しポートは、ページ上の要素を調べて、どのコントロールを確認するかです。
これに失敗し、ここに免責事項があります-私はこのソリューションをWeb向けサイトで使用したことはありません-しかし、過去に、限られたオーディエンスのアプリケーションで大規模なViewStateを排除したかったので、ViewStateをセッションに保存しました。
メモリへのヒットはユーザーの数にとって重要ではないので、それは私にとってはうまくいきましたが、かなり人気のあるサイトを運営している場合は、このアプローチをお勧めしません。ただし、セッションソリューションがSafariで機能する場合は、常にユーザーエージェントを検出し、適切にファッジすることができます。
私はこれについて少し調査を行ってきましたが、その原因は完全にはわかりませんが、Safariが完全な結果セットを返さないためだと思います(したがって、トリミングします)。
私は別の開発者と話し合っており、チャンネル9にも次の投稿があり、ポストバックの問題やページサイズを回避するためにSQLStateサービスを使用してビューステートを保存することを推奨しています。
これが最善の解決策のように思われますか?