2011-01-13 17 views
8

セッションタイムアウトを延長せずにASP.netがサーバーからデータをフェッチする方法はありますか?これは、ページが閉じられるまで、ユーザーの介入なしに数分おきに実行する必要があります。セッションタイムアウトを延長せずにサーバーからデータを取得

追加のコンテキスト、要求通り:

私のWebアプリケーション内のページには、特定の条件(この場合は30分の時間に予定の緊急メンテナンス、)を確認するために、サーバーに数分ごとにポーリングする必要があります。条件が真の場合、ページにはユーザーにメッセージが表示されます。条件がfalseの場合、何も起こる必要はありません。

私が理解しているように、サーバーへのポストバックは、セッションが終了するまでの時間をリセットします。我々は、ページがサーバをポーリングするたびに、セッションが拡張/リフレッシュ/リセット/どんな言葉であっても望ましくありません。セッションのタイムアウトをリセットせずにサーバーを自動的にポーリングする方法が必要です。

ありがとうございました。

+0

多少の情報が必要なのでしょうか?あなたはセッションのタイムアウトを延長することができます。 – Remy

+1

AJAX Webサービスへの呼び出しは、ユーザーのセッションを拡張してはなりません。 – Refugee

+1

@Refugee:してはいけませんか?私が探している答えであるかもしれないように、あなたのコメントを回答として投稿してください。 –

答えて

3

HTTPタイムアウトを防ぐために、長いHTTPリクエストのコンテキストで質問している場合は、のexecutionTimeoutが秒単位の場合はhttp://msdn.microsoft.com/en-us/library/e1f13641(v=vs.71).aspxとなります。

本当に単なるセッションタイムアウトの問題である場合、長いプロセスが実行されている間に同じユーザーセッションでサーバーに非同期でpingを実行できますか?

編集: サイトの正常な部分のセッション状態の範囲外のサービスにあなたの「Webサイトのメンテナンス」のWebサービスを分割した場合は、できるだけ頻繁にそれを呼び出すことができ、あなたの編集に基づいて、あなたが望むでしょう。この時点で現在のWebサイトでASMX Webサービスを使用している場合は、たとえば、別のアプリケーションに分割するだけです(アプリケーションのディレクトリとして、同じドメインに入るようにするなど)。それがうまくいくと思います。

現時点でどのWebサービスタイプ(ASMX、WCFなど)を呼び出しているのかわかりません。また、この時点で呼び出すWebサービスがあなたと同じアプリケーション内にあってもASPXアプリケーションページ。

+0

編集に必要な解決策が含まれています。 –

1

最初に、クエリがセッションの制限時間を超えて実行されている場合、クエリに重大な問題があります。むしろ最初にクエリを修正したいと思います。

<img id="dummyImage" src="/Dummy.aspx" width=0 height=0/> 

<script type="text/javascript"> 
    var dummyImage = document.getElementById("dummyImage"); 
    setInterval(function(){ 
     dummyImage.src = "Dummy.aspx?_tmp=" + (Math.random() * 100000); 
    }, 900000); 
</script> 
:15分ごとのようにそのURLをリフレッシュ

アプリでDummy.aspxを持つことができ、その後、画像要素を持っている: あなたはまだセッションを使用してそれを実行したい場合は、これを試してください

この方法では、グローバルレベルでのセッションタイムアウトには影響しません。

+2

dummyImage.src = "Dummy.aspx?....."を実行すると、ブラウザはそのURLにsessionId Cookieも含めてGETリクエストを発行し、セッションタイムアウトをリセットします。 –

-2

AJAX呼び出しを起動するjavascriptタイマーを使用します。あなたのPageLoadイベントでは、JavaScriptのsetInterval(functiontocall(), timetowait);機能をエコーアウトします。あなたが呼び出すメソッドは、AJAXがあなたのクエリを行うWebサービスにヒットします。

これは、ユーザーがページを閉じるまで自分自身を呼び出し続けます。

セッションはAJAXヒットからリフレッシュされません。

+3

AJAXが同じWebアプリケーションでヒットすると、残念ながらセッションが更新されます。しかし、助けてくれてありがとう。 –

+1

AJAXリクエストは、非同期であることを除いて、通常のリクエストと同じです。つまり、セッションIDクッキーも含めてセッションに要求を結び、タイムアウトをリセットします。 –

関連する問題