16

私が維持しているサイトの1つは、の使用に大きく依存していますViewState(これは私のコードではありません)。ViewStateただし、が肥大化している特定のページでは、Safariが"Validation of viewstate MAC failed"エラーをスローします。

これはSafariでのみ発生するようです。Firefox、IE、Operaはすべて同じシナリオで正常に読み込まれます。

4

3 に答える 3

5

私はChannel9ソリューションを2番目にしていますが、一部のホスト環境ではSafariが上位レベルのブラウザーとは見なされないことにも注意してください。一部のASP.Net機能を利用するには、アプリケーションのブラウザキャップに追加する必要がある場合があります。

これが、ASPメニューコントロールを使用するクライアントのサイトで発生したいくつかの頭痛の種の根本的な原因でした。

于 2008-08-04T13:44:49.473 に答える
3

私の最初の呼び出しポートは、ページ上の要素を調べて、どのコントロールを確認するかです。

  1. ViewStateをオフにしても機能します
  2. ページからAJAX呼び出しに移動して、必要に応じてロードできます

これに失敗し、ここに免責事項があります-私はこのソリューションをWeb向けサイトで使用したことはありません-しかし、過去に、限られたオーディエンスのアプリケーションで大規模なViewStateを排除したかったので、ViewStateをセッションに保存しました。

メモリへのヒットはユーザーの数にとって重要ではないので、それは私にとってはうまくいきましたが、かなり人気のあるサイトを運営している場合は、このアプローチをお勧めしません。ただし、セッションソリューションがSafariで機能する場合は、常にユーザーエージェントを検出し、適切にファッジすることができます。

于 2008-08-04T13:00:32.043 に答える
2

私はこれについて少し調査を行ってきましたが、その原因は完全にはわかりませんが、Safariが完全な結果セットを返さないためだと思います(したがって、トリミングします)。

私は別の開発者と話し合っており、チャンネル9にも次の投稿があり、ポストバックの問題やページサイズを回避するためにSQLStateサービスを使用してビューステートを保存することを推奨しています。

http://channel9.msdn.com/forums/TechOff/250549-ASPNET-ViewState-flawed-architecture/?CommentID=270477#263702

これが最善の解決策のように思われますか?

于 2008-08-04T12:40:49.137 に答える