問題タブ [failed-to-load-viewstate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
725 参照

c# - リピーターにマークアップを追加するときに「ビューステートの読み込みに失敗しました」という例外を回避するにはどうすればよいですか?

Repeater から継承するカスタム コントロールがあります。リピーター内のアイテムの周りにマークアップを挿入する必要があります。現在、Repeater.Items (OnPreRender) をループして、マークアップを含む LiteralControls を追加しています。これは、「Failed to load viewstate」例外をスローするため、ポストバックを実行する場合を除いてうまく機能します。

1)これに対するより良いアプローチはありますか?
2)または例外を回避する方法は?たぶん、これを引き起こす方法でマークアップを追加していますか?

0 投票する
5 に答える
33817 参照

c# - ViewStateUserKey を設定すると、「viewstate MAC の検証に失敗しました」というエラーが表示される

BasePageクラスには、すべての ASPX ページの派生元である次のものがあります。

にもmachineKeyセットがありWeb.configます。これは私の開発マシンでも発生するため、このエラーは Web ファームが原因ではないと思います。

ホストが .NET 3.5 SP1 にアップグレードされました。この更新後、ViewStateUserKey上記の設定でコンパイルするたびに、すべてのポストバックで「viewstate MAC の検証に失敗しました」というエラーが常に発生します。

ここで何が間違っていますか?この設定は、最新のフレームワークの更新でもう必要ですか?

0 投票する
1 に答える
2479 参照

asp.net - F5 ページの更新後の LoadViewState に関する問題 - ビューステートの読み込みに失敗しました

Viewstate と F5 ページの更新で ASP.NET アプリケーションに問題があります。

あるページから別のページに移動した後、すぐに F5 キーを押すと、次のエラーが発生します。

これにより、ページに次の例外が表示されます。

失敗するポイントは、親 LoadViewState を呼び出すときに、カスタム ラベル コントロールのオーバーライドされた LoadViewState メソッドにあります。

savedState オブジェクトは、Label コントロールが期待する System.UI.Pair オブジェクトではなく、System.Web.UI.Triplet である完全に異なるコントロール (ドロップダウン リスト) 用のようです。

同じアプリケーションで別のページを使用してまったく同じことを行うと、F5 ポストバックの後にページが正常に読み込まれます。2 つの Web ページは同じ基本クラスから継承し、同じカスタム コントロールを使用します。問題の原因となっているページには、動的に追加されたコントロールがありません。

プロセスをデバッグしたところ、正常にロードされたページのコントロールに対する F5 ポストバックの後、LoadViewState イベントが発生していないようです。どちらの場合も SaveViewState が発生します。

LoadViewState イベントが 1 つのページで発生し、他のページでは発生しない理由はありますか? 私は ASP.NET にかなり慣れていないので、ViewState の仕組みについてまだ頭を悩ませています。

0 投票する
4 に答える
1224 参照

c# - 動的コントロールが変更された後、「ViewState を読み込めません」

私の ASP.NET ページでは、ドロップダウン リストで選択した値に応じて、カスタム コントロールを動的に選択して読み込む必要があります。しかし、次の問題が発生しました。ドロップダウンリストが変更された (したがって、次回ページをリロードするときに別の動的コントロールをロードする必要がある) と、「ViewState を読み込めません」という例外が発生します。コントロールしても見つからない。では、ビューステートが存在しないコントロールの状態を復元しようとするのを止める方法はありますか?

0 投票する
1 に答える
933 参照

c# - 複合コントロールでビューステートを読み込めませんでした

「Type」と呼ばれるプロパティの 1 つの値に基づいてコントロールを変更する複合コントロールを作成しました。この「Type」プロパティが設定されると、コントロールの存続期間中は再度変更されないため、「Type」プロパティの値の結果としてレンダリングされるコントロールは変更されません。

多くのインターネット投稿で推奨されているように、LoadViewState メソッドと SaveViewState メソッドをオーバーライドしましたが、「ViewState の読み込みに失敗しました」というエラーが引き続き表示されます。コントロールは最初の読み込みで適切にレンダリングされますが、ポストバックが行われると、「ViewState の読み込みに失敗しました」というエラーが生成されます。

複合コントロールのコードの一部を次に示します。

カスタム コントロールを作成する「パーサー」ファイルのコードは次のとおりです。

コントロールをテストするために使用している aspx ページのコードは次のとおりです。

コードビハインド:

コントロールを if (!Page.IsPostBack) に入れることだけを試みましたが、ポストバックにコントロールをまったく表示しません。私は何を間違っていますか?

更新:だから私はこれを複合コントロールに追加しました:

そして、「ビューステートの読み込みに失敗しました」というエラーは表示されなくなりましたが、子コントロールのビューステートがポストバック間で保存されていないようです。私の複合コントロールのコントロールの 1 つは、ページングが有効になっているグリッドビューで、次のページをクリックすると 2 ページに移動しますが、3 ページや 4 ページには移動しません。でも「最後のページ」「最初のページ」には問題なく行きます。ただし、次のページと前のページは正しく機能しませんが、エラーも発生しません。アイデア?

0 投票する
2 に答える
2576 参照

asp.net - ビューステートエラーを発生させずに、データバインドされたグリッドビューに行を追加するにはどうすればよいですか?

データバインドされたグリッドビューに行グループ化行を追加しようとしています。最初の応答では正常に動作しますが、ポストバックで「ビューステートのロードに失敗しました」というエラーが発生しました。

GridViewのRowDataBoundイベントのコードは次のとおりです。

データソースでグループ化行を作成する方が簡単なことは知っていますが、このコードから派生して、サイトの他のグリッドへのベースを作成したいと思います。

0 投票する
1 に答える
376 参照

asp.net - ViewStateUserKey が検証されない場合がある

フォーム認証を使用する ASP.NET のアプリケーションがあります。次のコードがあります。

ステップスルーすると、ページが読み込まれるたびにこのコードが実行されることがわかります。ログインしたユーザーがページをリクエストすると、ViewStateUserKey にユーザー名が入力されます。フォーム認証がタイムアウトするまでページをそのままにしておくと、ユーザーはログインできなくなり、名前が null になるため、viewstate の検証でポストバックが失敗します。ただし、画面に他のボタンを配置してポストバックすると、認証がタイムアウトした後でも失敗しないことに気付きました。タイムアウトするたびにこのエラーが発生しますか?

0 投票する
1 に答える
443 参照

.net - ビューステートの読み込みに失敗しました - 動的に読み込まれたコントロールがありません

有名な「ビューステートの読み込みに失敗しました」という報告が散発的に寄せられています。動的に読み込まれるコントロールを使用していないため、追跡するのは非常に困難です。そしてそれは散発的です。

「viewstate の読み込みに失敗しました。viewstate が読み込まれているコントロール ツリーは、前の要求で viewstate を保存するために使用されたコントロール ツリーと一致する必要があります。たとえば、コントロールを動的に追加する場合、コントロールはポストバック中に追加されます」

これには他にどのような理由がありますか?アプリケーション プールのリサイクルは記録されていません。

0 投票する
4 に答える
1064 参照

c# - NLB でビューステートを読み込めませんでした

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

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

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

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

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

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

0 投票する
1 に答える
593 参照

jquery - ASP.NET ViewState validation when manipulating DOM

I'm, using jQuery and ASP.NET to show a dialog containing buttons. After some scouring, I got the buttons in the dialog to work by adding a tad more JavaScript to append the dialog to the form.

This works fine until I open the dialog, close it, then try to use a control like a ComboBox or LinkButton on the parent page. At which point I get a ViewState validation error:

Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.

Is there any way around this? I half see why it's happening - jQuery is changing the structure of the documents but I'm not entirely sure how/why this is affecting the ViewState.