問題タブ [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.
asp.net - ポストバックでviewstateが失敗する
私たちは Web コンテンツ管理システムを持っています (Sharepoint 2007/MOSS に基づいていますが、この問題の目的には関係ありません。MOSS に取り組んでいない場合でも、そのままにしておいてください!)。特定のページには、変更できない条件があります。
- 編集者が [編集] をクリックすると、ページがポストバックされます。
- 編集モードでリロードすると、コントロール ツリーはまったく異なります。
- 編集コントロールは頻繁にポスト バックされるため、ViewState は編集モードで有効にする必要があります。
プレゼンテーション モードで ViewState を無効にすると、すべて正常に動作します。編集ポストバックで ViewState が「有効」に設定され、編集コントロールが生成されると ViewState ツリーが初めて構築され、すべて問題ありません。
プレゼンテーション モードで ViewState を有効にすると、プレゼンテーションから編集に移行するときに、コントロール ツリーが変更されるため、ViewState エラーが発生します。
プレゼンテーション モードで ViewState を有効にする必要があるため、この遷移エラーを修正する必要があります。
ポストバック中に ViewState を無効にしてから、プログラムで再度ポストバックして再度有効にしようとしましたが、これにより MOSS で検証の問題が発生するため、オプションではないようです。
アイデア?
asp.net - Viewstate が IE のみで失敗する
データベースにクエリを実行し、結果を表示するための検索フィールドを含むページがあります。ビューステートは、ドロップダウンのアイテムのリストを保持するために必要です。
Firefox (3) と Chrome ではすべて正常に動作しますが、Internet Explorer では失敗しますが、たまにしか機能しません (フォームのリセットなどの特定のアクションで、実際にはいくつかのクエリ文字列パラメーターを使用して response.redirect を実行するだけです)... Viewstate が URL にダンプされ、エラー ページがスローされます。
誰もこれに遭遇したことがありますか?おそらく、これが IE で発生する原因についてのいくつかの指針はありますか?
ありがとうございます。
グレッグ
アップデート:
さらに調査した結果、実際のエラーは次のとおりであることがわかりました。
「viewstate MAC の検証に失敗しました。このアプリケーションが Web ファームまたはクラスターによってホストされている場合は、構成で同じ validationKey と検証アルゴリズムが指定されていることを確認してください。AutoGenerate はクラスターでは使用できません。」
役立つ可能性があるその他の情報: これは、コンテンツ管理システム (Umbraco) でホストされているユーザー コントロールが原因であり、viewstate がページに渡される理由に関係している可能性があります (コントロールが含まれているため)。 CMS のより大きなページ)。私はこれをもう少し調査しますが、他の提案があれば大歓迎です。
乾杯グレッグ
更新 2:
なぜこれが IE でのみ発生するのか (FF や Chrome では発生しないのか) を誰かが提案できますか?? 他のブラウザが問題なく処理できる場合、コントロールの変更、マシンキー、または私がその場所で読んだその他の提案の問題である可能性はほとんどないようです。
この失敗を引き起こす可能性のある IE の動作の違いについてのアイデアはありますか??
解決:
CMS で間違ったマスター テンプレートを使用していたため、フォーム タグが 2 つありました。余分なフォームタグを削除してください。問題は解決しました!
この問題の解決を手伝ってくれた bendewey に感謝します (bendewey の投稿のコメントを参照してください)。
それは私の人生の 4 時間です。戻りたいと思っています。スタック オーバーフロー コミュニティに感謝します :)
asp.net-mvc - .NET 3.5 SP1 へのアップグレード後に Html.AntiForgeryToken() が原因でエラーが発生する
.NET 3.5 SP1 に更新したところ、以前は動作していた ASP.NET MVC ページが動作しなくなりました。
ページを読み込もうとすると、次のYSODが表示されます
行を削除すると
すべてが再び機能します。これを引き起こしている可能性のあるアイデアはありますか? これが MVC または .NET の問題である場合、解決策を見つけるのにもっと幸運が期待できたので、それは私の構成に関係していると思います。
MVC フレームワークを再インストールして、SP1 より前にインストールしたことが原因かどうかを確認しましたが、それでも同じ問題が発生します。Google と SO の検索では、確固たる結論は得られませんでした。
c# - ASP.NET での MachineKey の使用
asp.netでマシンキーが役立つさまざまな方法は何ですか? 以下は正しいと思いますが、もっとあるかもしれないと思いました。
- 複数のアプリケーションが同じ Cookie を使用できる
- 複数のサーバーが同じビューステートで動作可能
asp.net - ASP.NETの追加の部分クラス
ASP.NETページの1つに巨大なコードビハインドファイルがあります。コードを複数の部分クラスに分割できれば、コードの保守が簡単になります。ただし、これはASP.NETについては十分に文書化されていません。
追加の部分クラスをApp_Codeフォルダーに移動する必要があることを学びました。Webコントロールを参照するには、Protected WithEvents宣言を使用する必要があるようです(まだ機能するかどうかはわかりませんが)。
私が今電話を切ったのはViewStateです。追加の部分クラスファイルでそれを参照することはできません。部分クラスのクエリ文字列からID番号を取得する必要があります。クエリ文字列値のコードビハインドファイルにパブリックプロパティを作成すると、部分クラスファイルで参照できなくなります。表示されません。
asp.net - なぜ、Session ストレージ オブジェクトよりも asp.net の ViewState ストレージ オブジェクトを使用するのでしょうか?
セッション ストレージが複数のページに対してセッション グローバルであるという理由以外に、ビューステートを使用して値を保持する必要があるのはなぜでしょうか?
値のようないくつかの小さなクエリ文字列以外のあらゆる種類の情報を、クライアントとサーバーの間でやり取りするのは、ばかげているように思えます。つまり、単にストレージの目的で帯域幅を浪費する (!) ことです。セッションは、複数のページにわたってグローバルですが、viewstate の完全に優れた代替手段のようです。
特に、asp.net の ajax コントロールとバリアントでは、viewstate がすぐに肥大化し、さまざまなコントロールと html 要素すべてのさまざまな状態と変数を追跡する可能性があります。
しかし、ページ変数とオブジェクトのビューステート ストレージが存在するのはなぜでしょうか?
ページのビューステート ストレージの別の優れた使用法を見逃している可能性があります。何か知っている人はいますか?
読んでくれてありがとう!
編集:誰もが素晴らしい答えを持っていました。あなたの答えを選ばなかったらごめんなさい。
asp.net - 時折発生する Invalid viewstate エラーは無視する必要がありますか?
ASP.NET 3.5 アプリケーションのログに、ときどき (毎日 1 回程度) 次の種類のエラーが表示されます。
- ビューステートが無効です
- 無効なポストバックまたはコールバック引数
これらは、ASP.NET アプリケーションで時々発生するものですか? 問題の原因を診断するために多くの時間を費やすことをお勧めしますか?
c# - ビューステートのロードに失敗しました。たまにしか起こりません。再現するのは難しい
エラーの詳細を以下に示します。このエラーはたまに/めったに/たまにしか発生せず、再現する手順はありません。
どのコントロールがこのビューステートエラーをスローしているのかをどうやって知ることができますか?
エラーメッセージ:ビューステートのロードに失敗しました。ビューステートがロードされるコントロールツリーは、前のリクエスト中にビューステートを保存するために使用されたコントロールツリーと一致する必要があります。たとえば、コントロールを動的に追加する場合、ポストバック中に追加されたコントロールは、最初のリクエスト中に追加されたコントロールのタイプと位置と一致する必要があります。
いつ:めったに/たまに
再作成する手順:できません
スタックトレース:
asp.net - ASP.Net: コントロール イベントで Viewstate に加えた変更が、後続のポストバックで利用できないのはなぜですか?
ASP.Net AJAX を使用して、ASP.Net 3.5 WebForms でカスタム コントロールを作成しています。コントロールに状態切り替えを作成しています (展開モードと折りたたみモード)。コントロールの現在の状態を ViewState に保持しようとしており、サーバー側のイベント ハンドラーで手動で変更しています。
重要ではないと思いますが、実際のレンダリングは updatepanel で行われ、上記のコードは非同期でトリガーされるイベント ハンドラーにあります。私が抱えている問題は、次のポストバックでViewState["Expandedness"]
null が返されることです。Fritz Onion の Viewstate Decoder ツールを使用して、ポストバック間のビューステートの実際の内容を確認しようとしましたが、シリアル化されたデータが無効であることがわかりました。
ここで間違ったアプローチをしましたか?この問題に取り組む正しい方法は何ですか?