問題タブ [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 投票する
2 に答える
791 参照

c# - ASP.NET 2.0:履歴ポイントを作成せずにページにビューステートを記憶させる方法は?

いくつかのフィールドとランタイム生成の画像を含むページがあります。このページのコンテンツは UpdatePanel 内にあります。クリックすると javascript:history.go(-1) を呼び出すボタンがあるセカンダリ ページにユーザーを移動するためのボタンがあります。

問題は、最初のページがポストバックの代わりに完全なリクエストを実行するか、そこから移動する前の状態を使用することです。つまり、フィールドはすべてデフォルト値にリセットされるため、ユーザーは混乱します。ナビゲーションに関係なく、それらの値を保持したいと思います。フィールドが変更されるたびに新しい履歴状態を作成したくありません。

何か案は?

0 投票する
3 に答える
33832 参照

asp.net - WebResource.axd の「パディングが無効であり、削除できません」という例外

ローカル環境で正常に動作する ASP.NET 2.0 アプリケーションがあります。テスト サーバーに公開すると、サーバーで断続的なエラーが発生します。

最も一般的なものは次のとおりです。

パディングが無効であり、削除できません。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.Security.Cryptography.CryptographicException: パディングが無効であり、削除できません。

ソース エラー:

現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。

スタックトレース:

[CryptographicException: パディングが無効であり、削除できません。]
System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) +1545747
System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) +257
System.Security.Cryptography.CryptoStream.FlushFinalBlock() +30 System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte [] buf、Byte[]修飾子、Int32 start、Int32 length、Boolean useValidationSymAlgo) +164
System.Web.UI.Page.DecryptString(String s) +83
System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext コンテキスト) +148
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +358 System.Web.HttpApplication.ExecuteStep(IExecutionStep ステップ) , Boolean& completedSynchronously) +64

これは、特定の WebResource.axd リクエストへのリクエストで発生します。

表示されている他のエラーは次のとおりです。

ビューステート MAC の検証に失敗しました。このアプリケーションが Web ファームまたはクラスターによってホストされている場合は、構成で同じ validationKey と検証アルゴリズムが指定されていることを確認してください。AutoGenerate はクラスタでは使用できません。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.Web.HttpException: ビューステート MAC の検証に失敗しました。このアプリケーションが Web ファームまたはクラスターによってホストされている場合は、構成で同じ validationKey と検証アルゴリズムが指定されていることを確認してください。AutoGenerate はクラスタでは使用できません。

このエラーは、フォームの投稿中に時々発生します。

飛び込んで、このエラーに対する明白な (通常の) 答えを教えてくれる前に、次のことを考慮してください。

  • アプリケーションは、IIS6 上の Windows Server 2003 に展開されます。
  • Web ファームではありません。ここでは 1 つの Web サーバーのみが使用されています。
  • アプリケーション プール ID はカスタム サービス アカウントでありaspnet_regiss -ga <username>、サーバー上で実行しました。無効。
0 投票する
2 に答える
465 参照

visual-studio-2008 - ViewState、FormView、およびコントロール

ViewState エラーを追跡できるように、フォームビュー内のさまざまなテンプレートのコントロールを (Visual Studio で) どのように比較しますか?

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

.net - .net アプリケーションの奇妙なエラー。- RijndaelManaged

最近の負荷テスト中に、奇妙な「Index Out of Range Exception」が発生しました

スタックトレース:

私たちはファームやクラスターを使用しておらず、アプリで暗号化を使用していません。

これは、舞台裏の .Net クラスで発生しているようです。

これはビューステートと関係があると思いますが、なぜこれがスローされているのかわかりません。

何か案は?

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

.net - ビューステート MAC の検証に失敗しました

現在、次のエラーが発生しています。

ビューステート MAC の検証に失敗しました。このアプリケーションが Web ファームまたはクラスターによってホストされている場合は、<machineKey>構成で同じ validationKey と検証アルゴリズムが指定されていることを確認してください。AutoGenerate はクラスタでは使用できません。

このエラーに対する複数の解決策を見つけました。現在使用しているソリューションは、マシン レベルで静的な MachineKey フィールドを追加し、静的な検証キーと復号化キーを使用することです。

このソリューションは .NET 3.5 で機能しますか? よりエレガントなソリューションはありますか?

0 投票する
9 に答える
14849 参照

c# - ポストバック中に selectedIndex が失われる - ASP.NET

私はリストボックスコントロールを持っています:

コード ビハインドは次のようになります。

私の問題は、私のページがポストバックを受信したとき (ユーザーがリストボックスで選択を行ったとき)、選択が常にリストボックスの最初の項目に「ジャンプ」するため、コールバック関数のインデックス変数が常に 0 になることです。

これはビューステートの問題である可能性がありますか?選択インデックスがポストバックを通じて残るようにするにはどうすれば修正できますか?

進行中の ajax はありません。これは .NET 1.0 です。

ありがとう。

編集 1 JohnIdol は一歩近づきました。データソースを元の DataTable から ArrayList に切り替えると、すべてが正常に機能します...何が原因でしょうか?

編集 2私の DataTable には同じ値が複数あることが判明したため、インデックスは同じ値を持つすべてのアイテムと同じように扱われました...助けてくれた人に感謝します!

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

asp.net - asp.net ビューステート暗号化

asp.net 3.5 でビューステートがいつ、どのように暗号化されるかについていくつか質問があります。たとえば、web.config に次のような machinekey エントリがあるとします。

この時点でビューステートは暗号化されていますか? または、ページ セクションでも viewStateEncryptionMode を指定する必要がありますか?

また、フォーム認証 Cookie を暗号化することはできますが、同時にビューステートを暗号化することはできませんか?

助けてくれてありがとう。

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

asp.net - クライアントがリクエストごとに複数の IP 経由で接続すると、ViewState のデコードに失敗する

私たちのサイトにはやや奇妙な問題があります。

一貫して、1 人の匿名* ユーザーから次のエラーが発生します。

例外の種類: System.FormatException

例外メッセージ: Base-64 文字配列の長さが無効です。

いくつかの調査の後、IIS ログが 2 つの異なる (ただし連続した) IP から発信された要求を示しているため、ユーザーは何らかの形式の負荷分散ファイアウォールを使用しているようです。

私が判断できることから、「ViewStateMAC」を無効にすると、この問題が解決するはずです。

しかし、私には確信が持てず、ユーザーと一緒にこれをテストする方法がないため、それを進めるのは少し気が進まない.

誰かが同様の問題を経験しましたか? 彼らにどのように対処しましたか?

サーバーの詳細:

単一の IP から実行される単一のサーバー (Win2003)。

アップデート:

私が判断できることから、ViewStateMAC はサーバー側専用です。私の問題は、クライアントが複数の IP を持つ単一のページをポストバックしたことが原因です。

* ただし、IIS ログから決定された同じ 2 つの IP から。ユーザーに悪意もありません。

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

asp.net - 異なるコントロールを動的にロードするときにビューステートをロードできませんでした

ポストバック (つまり、クリック イベントが発生したとき) にいくつかのコントロールを動的にロードし、それらをプレースホルダーに追加する aspx ページがあります。クリックされた内容に応じて、異なるコントロール セットをロードする必要があります。
これは初めて完全に機能しますが、プレースホルダーのコントロールをクリアして別のコントロール セットを動的にロードしようとすると、次のエラーが表示されます:前回のリクエストでビューステートを保存するために使用されたものです。」

これは、ViewState.Clear() を実行しても発生します。

これを行う方法はありますか?

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

.net - ページの更新とブックマークを使用した ASP.NET ViewState ポストバック

ASP.NET ViewState 機能は、両刃の剣になる場合があります。私はほとんどのプロジェクトでこれを使用しており、開発が大幅にスピードアップします。

私の問題は、ユーザーがページを更新しようとするとビューステートが失われる場合があることです。また、ユーザーがページをブックマークしたい場合がありますが、元に戻すとビューステートが失われます。

最新のブラウザーは、まったく望ましくない POST 操作 (たとえば asp ポストバック) の結果であるページをユーザーが更新しようとすると、ばかげたダイアログを表示します。

ViewState とポストバック モデルを引き続き使用する方法はありますが、更新ダイアログ ボックスの欠点はありません。(そして、可能であればページをブックマークしてください。)

私がやりたいことの例は、レコードとチェックボックスが横にあるページを作成することです。ユーザーは、削除するすべてのレコードをチェックしてから削除ボタンをクリックするオプションがあります。ユーザーが [削除] をクリックすると、サーバー上でレコードが分析され、削除の確認ボタンで選択されたすべてのレコードが新しいページに一覧表示されます。ユーザーが更新をクリックすると、このばかげたボックスが表示され、投稿するかどうかを確認できます。

ViewState が Post Back モデルを使用した結果であることは理解しています。つまり、ほとんどの asp.net ページが POST 操作の結果であることを意味しますが、それを回避する方法はあるのでしょうか。

私がうまくいくと思った回避策:
Page_Unload イベントで、一意の ID を使用してセッションにビューステートを保存し、URL に一意の ID を使用してページが読み込まれた後、クエリ文字列パラメーターとして一意の ID を使用してユーザーを同じページにリダイレクトします。ビューステートはセッションからロードされ、現在のページに挿入されます。このようなメソッドを使用すると、ユーザーはページを更新して、常に同じ結果を得ることができます。

PS私はResponse.Redirect()、および/またはクエリ文字列を使用できることを理解していますが、単純さを使用したいですViewState