質問

セッションに依存しないが、ポストバック間の永続性をビューステートに依存するaspxページがあるとします。

ユーザーがこのページにアクセスしていて、長い昼食に出かけた場合、ビューステートは再び戻ったときに有効ですか?

役に立ちましたか?

解決

PostBackプロセスの一部として保持されるViewStateはありません。ただし、オーバーライド PageクラスのSavePageStateToPersistenceMedium()およびLoadPageStateFromPersistenceMedium()、必要に応じてその動作を実装します。詳細については、 ASP.NET ViewStateについてを参照してください。

ページ ViewStateはセッションに保存されるため、セッションの有効期限が切れると、ViewStateは失われます。これはViewStateの有効期限が切れるとは言いませんが、はい、セッションタイムアウト後に破棄されます。

他のヒント

Viewstate自体は期限切れになりません。フォームにポストバックされるため、いつでも再構成できます。

MSDNによると:<!> quot;。 ..セッションの有効期限内にページがポストバックされない場合、ビューステートの有効期限が切れる可能性があります <!> quot;。そのため、ある種のラウンドでは、セッションが期限切れになると期限切れになりますが、ビューステートは直接期限切れになりません。とにかくセッション状態を使用していないので、暗黙の有効期限について心配する必要はありません。

期限切れとは言わなかったことに注意してください。それは ViewStateの制御

Viewstateの有効期限はありません。

すべてのビューステートデータはクライアントに保存され、ユーザーがポストバックを実行するとサーバーに送信されます。

これにはいくつかの非常に興味深い意味があり、非常に詳細に説明されていますこちら

また、デフォルトでは、ASP.NETは自動生成されたキーでViewStateを暗号化します。これは、web.congifファイルのMachineKey要素でオーバーライドできます。 ViewStateの有効期限はありませんが、IISのリセット、アプリケーションの再デプロイ、またはWebファーム内の別のサーバーへのアクセスなど、別の自動生成キーを使用してViewStateを復号化すると無効になる場合があります。ビューステートを長期間保存することを計画している場合は、ビューステートの暗号化/復号化に注意してください。

http://msdn.microsoft.com/en-us/library/ ms998288.aspx

はい、特定の条件でViewStateの有効期限が切れます。たとえば、iframe:sを使用しているとき、または<!> quot; live <!> quot;を維持しているとき通常のポストバックを使用したサーバーへの接続。次に、このオプションを調査することをお勧めします:<sessionPageState historySize="9"/>。これは実際にいくつの<!> quot;ポストバック結果<!> quot;をハードコーディングします。 Sessionに保存されます(SessionPageStatePersterが使用されている場合)。各ポストバックは、ViewStateをSession [<!> quot; __ VIEWSTATEQUEUE <!> quot;]のキューの最後まで保存し、<!> quot; too old <!> quot;であるViewStateを削除します。また、web.configで任意のhistorySize-constantを構成することにより、SessionPageStatePersterがどのViewStateが古すぎるかをどのように判断すると思いますか。この問題を見つけるのは永遠に私も... asp.netプログラミングに対する私の憎しみは、今は言葉に表せません。grrr...

Viewstateは、ページ上にある限り有効期限が切れることはありませんが、ページ内に存在し、機能します。

ViewStateはPOSTからPOSTまで持続します。実際にはフォームの非表示フィールド内に保存されるため、常にサーバーにPOSTされます。

セッションに依存していない限り、ページ状態の再構築に問題はないはずです。ただし、必要に応じてページの状態コードをテストするのは簡単です。web.configで60秒後にセッションの有効期限が切れるように設定し、ページをロードして、1分以上待ちます(Stack Overflowにアクセスしていくつかの質問に答えます)ページ上のボタンをクリックします。

この古いスレッドを追体験して申し訳ありませんが、新しい情報が利用可能になりました:

はい、ViewStateは期限切れです。私は、長い時間間隔のポストバックの間にViewStateの値が失われる問題について調査した19時間から来ました。 MSDNドキュメントとStackoverflowの回答を読むのに少し時間がかかりました。カスタムViewStateストレージの実装が採用されない限り、基本的に不可能だと言われていますが、今では事実ではありません。

私の問題はSharePoint 2013環境で発生していました。 Distributed Cache (別名: AppFabric )として知られるサービスは、ViewStateのキャッシュを行い、それに関連付けられた Time to Live を持っています。詳細についてはこちらをご覧ください。 http:// blogs .msdn.com / b / besidethepoint / archive / 2013/03/27 / appfabric-caching-and-sharepoint-1.aspx

このフレーズには興味深い情報が含まれています。 <!> quot;ページのパフォーマンスを向上させるため、SharePoint 2013以降、SharePointはViewStateデータをクライアントに前後に転送するのではなく、サーバー側にキャッシュします。<!> quot;

この情報が、私が19時間前のように必死になっている人の助けになることを願っています。

ViewStateは、ページ自体の非表示フィールドに保持されます。そのため、ユーザーがページを持っている限り、ViewStateを持っています。ただし、一定の時間が経過するとアプリがユーザーを自動的にログアウトする場合、ViewStateを保持していてもユーザーには何の効果もありません。

デフォルトでは、Viewstateは非表示の入力としてhtmlコンテンツに含まれています。つまり、有効期限はありませんが、ビューステートのすべてをユーザーのブラウザーからアップロードする必要があります。これは一般に公開サイトの接続の最も遅い部分であるため、ビューステートに多くのものを置くと、サイトがすぐに非常に遅く見える可能性があります。

短い答え:いいえ。

長い答えは、ViewStateストレージの実装に依存します。指定された時間が経過すると期限切れになるViewStateのカスタム実装を提供できます。たとえば、ViewStateをデータベースまたはディスクに保存し、非表示フィールドに保存された値への参照のみを送信できます。その後、バッチ処理を使用して、古いViewStateデータを削除したり、要求に応じて有効期限を実行したりできます。

ビューステートは期限切れになりません。他のページにリダイレクトすると、ビューステートの値が失われるか、ビューステートが期限切れになります。 詳細については、 http://www.c-sharpcorner .com / UploadFile / 78d182 / Asp-Net-state-management-techniques /

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top