4

ポストバックごとにページのコントロールを動的に作成し、ブラウザの履歴などを使用して処理するシステムがあります。

問題は、実稼働サーバー (NLB の 2 つのノード) で、相関関係が見つからない異なるネット スポットにランダムに発生することです。ただし、ステージング サーバー (本番環境と同じ NLB セットアップ) でまったく同じコードが発生したことはありません。

本番環境ではかなり頻繁に発生する開発/ステージングまたはローカル環境ではまったく発生しないため、この時点でそのコードを基本的に除外しています。これにより、どこかに構成エラーがあると思い込んでいます。

ステージングと運用で使用される web.config にハードコードされたマシン キーを設定しました。セッションは MSSQL に基づいています。

誰かが私を正しい方向に導くための素晴らしい提案を持っているなら、私たちの開発チーム全体がこれに困惑しています.

私たちの webconfig はこちらの pastbin にあります: http://pastebin.com/m2kRTd0k

4

4 に答える 4

1

確認できる点は次のとおりです。

  • 編集した web.config ファイルが使用されていることを確認しますか? それらに構文エラーを入れてみて、エラーが発生することを確認してください。
  • ステージ環境で Sticky IP が構成されていないことを確認します
  • 環境が同じパッチ レベルであることを確認してください。おそらく、一方のデフォルト値が他方と異なる場合があります。
  • 2 つの環境が配置されているネットワーク インフラストラクチャにも違いがある可能性があります。
于 2011-07-14T20:55:48.620 に答える
0

私の会社には、完全にデータベース駆動型の動的なアンケート フォームがあります。

非常に多くの質問タイプがあるため (例: はい/いいえ、値ベース、複数選択、スライダー、複数レベルのドロップダウンなど)、フォームを動的に作成する必要があります。

本番環境では問題が発生しますが、開発環境や QA 環境では発生しません。しかし、私たちの問題はコードでした。アプリケーションを本番環境にプッシュしたとき、dev/qa で実行できたよりもはるかに多くのシナリオを実行しているユーザーが非常に多くいました。

「viewstate の読み込みに失敗しました」というメッセージが表示された場合は、通常、次の 2 つのいずれかを実行すると問題が解決します。

  • INIT ステージでのみ、すべてのコントロールを動的に作成します。ViewState が適切に機能するためには、これをここで行う必要があります。ViewState は、INIT の完了後に読み込まれ、PRERENDER の完了後に保存されます。コントロールは LOAD ステージの最後まで作成できますが、配線に微妙な違いがある場合があります。(http://msdn.microsoft.com/en-us/library/ms178472.aspx#general_page_lifecycle_stages)

  • AJAX をオフにして、問題が解決するかどうかを確認します (通常、これが原因です)。これで問題が解決した場合は、ページのレイアウトを変更する原因となる AJAX ポストバックがないことを確認するだけです。AJAX 呼び出しは、コントロールを非表示にしたり、新しい ID でコントロールを再レンダリングしたりして、次の通常のポストバックでコントロール ツリーの変更を検出するなどの単純なことを行う場合があります。ajax を使用してコントロールを非表示にする必要がある場合は、代わりに attribute('display','none') を追加するだけです。変更が完了したら、AJAX をオンに戻します。

于 2011-07-14T18:52:11.063 に答える
0

これはさまざまなブラウザで発生しますか? 古いバージョンの Safari や一部のプロキシ サーバーでは、ビューステートがサーバーに返されるときに切り捨てられます。

ビューステートをチャンク化するために試してみたいことがあります。これを行うには、web.configmaxPageStateFieldLengthのタグに属性を設定します。pagesここに例があります

<pages maxPageStateFieldLength="900">

最後に、clientSide ビューステートをまったく使用しないことを検討することをお勧めします。サーバー側の SQL ベースのビューステート プロバイダーを実装する記事を次に示します: http://www.codeproject.com/KB/viewstate/ViewStateProvider.aspx

于 2011-07-14T19:18:17.837 に答える
0

非常によく似た問題がありました。負荷分散された運用サーバーで「viewstate の読み込みに失敗しました」というエラーが発生しましたが、ローカル/開発サーバーでは再現できませんでした (開発サイトで負荷分散を行うために追加のインスタンスを追加した場合でも)。 .

最後に、展開中のエラーにより、実稼働サーバーの 1 つが別のサーバーとは異なるバージョンであり、ユーザーが 1 つのサーバーで開始して別のサーバー (スティッキー IP が構成されていない) を続行すると、viewstate エラーが発生することがわかりました。

于 2020-05-20T22:27:18.547 に答える