2011-07-15 21 views
0

私はASP.NET Webサイトのタイムアウト機能を構築しようとしています。そのアイデアは、一定量の非アクティブの後、ブラウザがログインページにリダイレクトされるということです。 (ログインページのコードビハインドは認証をクリアするので、そこにいたらログインして他の場所に移動する必要があります)。asp.net経由で.asmx Webサービスを呼び出すときのクライアント側のイベント?

完全なポストバックを持つ古いスタイルのページでは、メタリフレッシュタグを設定するだけで動作します。アクションにはポストバックが含まれます。これは新しいページを意味し、メタリフレッシュタグをリセットします。

UpdatePanelsと部分的なポストバックでは、うまくいきません。部分的なポストバックを行うとページがリロードされないため、メタリフレッシュは決してリセットされません。ユーザーがページ上で非常にアクティブであっても、ログインするようにリダイレクトされます。良くない。

修正点は、メタリフレッシュの代わりにjavascriptを使用することです。 windows.setInterval()によって実行されるコードの一部は、現在の時刻と前回の活動の時刻を比較し、必要に応じてリダイレクトを行います。シンプルではありますが...

重要なビットは最後の活動時間を設定しています。部分的なポストバックの場合は、1つ以上のSys.WebForms.PageRequestManagerイベントでハンドラを設定することでこれを行うことができます。私は現在initializeRequestを使用していますが、うまくいきます。すべての部分的なポストバックの開始時に、私は最後のアクティビティ変数をリセットし、すべてが良好です。例外...

私のページの中には、.asmx Webサービスへの非同期呼び出しによって実行されるコードもあります。これらはSys.WebForms.PageRequestManagerのライフサイクルを経由せず、initializeRequestは呼び出されません。

私はこれらの呼び出しのそれぞれの周りにjavascriptに入り、最後のアクティビティ変数をリセットするビットを追加することができますが、私はむしろそうしたくありません。むしろ、私は部分的なポストバックの場合と同じように、すべての呼び出しによってトリガされるいくつかのきれいなフックを持っています。しかし、私は1つを見つけることができませんでした。つまり、.asmx webserviceライフサイクルのドキュメントを見つけることはできませんでした。

.asmx Webサービスの呼び出し中に発生したクライアントサイドのイベントはありますか?

どこで私がそれらについて学ぶことができるのですか?

答えて

0

チェックhttp://msdn.microsoft.com/en-us/library/system.web.services.webservice.aspx。 Disposedというイベントが1つしかありません。

元の質問です。メタリフレッシュに頼るべきではありません。また、UpdatePanelsは、サーバー上でPage_Loadや他のイベントを発生させます(しかし、完全なポストバックのようなすべてのイベントではありません).WebServicesを使用しようとすると、実際の問題を解決できないと思います。

+0

メタリフレッシュは、それがうまくいくように設計されたものです。それは単に私がする必要があることをするように設計されていませんでした。 Page_Load()については、サーバー側のイベントです。それはブラウザ上で実行されているjavascriptとは関係ありません。 –