0

asp.netでブラウザがクラッシュした場合にアクションを実行したいと思います。カートに追加されたアイテムを破棄し、ブラウザがクラッシュした場合にアプリケーションとデータベースの元の状態に戻したい。

これどうやってするの?

4

1 に答える 1

0

悲しいことに、いくつかの要因のために不可能です。

1)ネットはステートレスです。つまり、Webサーバーは、何かを要求したことを除いて、Webブラウザーについて何も知りません。リクエストが処理された後は、ブラウザと通信する方法がありません。

2)ブラウザにも同じ問題があります。サーバーにコンテンツを要求して取得したら、それだけです。ユーザーがブラウザを閉じたり、セッションをタイムアウトさせたりした場合、またはブラウザがクラッシュした場合、サーバーはそれを認識せず、ブラウザはそれを通知しません。

3)ブラウザがクラッシュすると、ブラウザがクラッシュしたため、ブラウザが機能しなくなったため、どこにも情報を送信できなくなります。

session_endイベントにフックすることができます。このイベントは、ユーザーのセッションが終了したときに発生します(ユーザーが一定期間何も要求しなかった場合にセッションが終了します。これは、デフォルトで20分です)。セッションが終了した理由を教えてください。ユーザーのブラウザがクラッシュしたか、ブラウザを閉じたか、退屈して別のサイトに移動した可能性があります。

通常、ユーザーがチェックアウトするまでアプリケーションの状態を更新しないため、削除する必要があるのはバスケットだけです。そのために、カートテーブルに日時列を設定し、カートが更新されるたびに更新します。次に、データベースでスケジュールされたタスクを毎日実行し、バスケットを保持している時間よりも古いすべてのバスケットを削除します。

于 2012-04-16T15:28:48.997 に答える