セッション変数をチェックするかどうかに関係なく、セッションタイムアウトはすべてのリクエストでリセットされますか?または、少なくとも1つのセッション変数を使用する必要がありますか?
Ajaxリクエストによりセッションタイムアウトがリセットされますか?お気に入り Update Panel
、jQuery ajax
、.。
ありがとう
編集1)
HTTP Get
セッションタイムアウトのリセットを引き起こしますか?
はい、そうです。実際にSession
を使用するかどうかは関係ありません。
ただし、onlyajax呼び出しを使用している場合は、いくつかの問題が発生する可能性があります。
(私自身は遭遇していませんが、 ここ の説明です)
セッション変数をチェックするかどうかに関係なく、セッションタイムアウトはすべてのリクエストでリセットされますか?
サーバー側のコードを呼び出し続ける場合、Session
は期限切れになりません。 session
タイムアウトは、サーバーへのリクエストごとにリセットされます。同じWebサイトへの後続の要求で、ブラウザーはサーバー側モジュールがセッション値(ユーザー情報など)にアクセスするために使用するASP.NET_SessionId Cookie
を提供します。
---------------------------------------------------------------------------------
How to detect the Session TimeOut
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
質問-2-Ajaxリクエストによりセッションタイムアウトがリセットされますか? Update Panel、jQuery ajax、..のように.
質問--HTTP Getはセッションタイムアウトのリセットを引き起こしますか?
Session
は、ユーザーがリクエスト間で長時間待機した場合に期限切れになります。 server side
コードを呼び出し続けると、Session
は期限切れになりません。 session
タイムアウトは、サーバーへのリクエストごとにリセットされます
Web.Config
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="true" timeout="1" />
セッション変数をチェックするかどうかに関係なく、すべてのリクエストでセッションタイムアウトがリセットされますか?または少なくとも1つのセッション変数を使用する必要がありますか?
セッション変数が確立されるまで、ポストバックごとに新しいセッションIDが生成されます。
Ajaxリクエストによりセッションタイムアウトがリセットされますか?Update Panel、jQuery ajax、...など
デフォルトでCookieに保存されるセッションIDは、AJAXおよび非AJAXリクエストごとに送信されます。したがって、サーバーはセッションユーザーを認識します。はアクティブです。私の言葉を信じないでください。つまり、fiddlerまたはF12ツールを使用してください。すべてのAJAX GET/POSTリクエストでCookieが送信されているのを確認できます。
これは多くの要因に依存するため、以下のようなテストを実行することをお勧めします。あなたの正確な状況があなたの環境で機能するかどうかを知るのに本当に5分もかかりません。これは、これをテストするために使用したコードです。Telerikコントロールを使用してアイデアをテストしますが、.getを追加して、必要な正確な答えを取得しました。 aspxページには
<telerik:RadScriptManager ID="RadScriptManager1" Runat="server">
</telerik:RadScriptManager>
<telerik:RadAjaxManager ID="ram" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="btnFake">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="lblAnswer" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<script src="Scripts/jquery-1.4.1-vsdoc.js"></script>
<script>
$(document).ready(function () {
setTimeout(function () { document.location.href = "default.aspx?next"; }, 61000);
setInterval(function () {
var divForTimer = $("#divTime");
var secs = parseInt(divForTimer.html());
secs = secs + 1;
$("#divTime").html(secs.toString());
}, 1000);
});
function getPage() {
$.get("test.aspx", function(result) {
$("#btnFake").val("Got it");
});
}
</script>
<asp:Label ID="lblAnswer" runat="server"></asp:Label>
<Asp:button ID="btnTest" runat="server" Text="Renew" onclick="btnTest_Click" />
<input type="button" ID="btnAjaxget" onclick ="getPage()" value="Ajax get" />
<asp:Button ID="btnFake" runat="server" Text ="Fake it"
onclick="btnFake_Click"/>
<div id="divTime">1</div>
.csページには
protected void Page_Load(object sender, EventArgs e)
{
Session.Timeout = 1;
if (EMSG.CommonFunctions.GetSession("test").Length > 0)
{
this.lblAnswer.Text = "Session=" + EMSG.CommonFunctions.GetSession("test");
}
else
{
this.lblAnswer.Text = "No session";
}
}
protected void btnTest_Click(object sender, EventArgs e)
{
Session["test"] = "variable set";
this.lblAnswer.Text = Session["test"].ToString();
}
protected void btnFake_Click(object sender, EventArgs e)
{
lblAnswer.Text = "Ajax called.";
}
---状況に合わせて上記を調整できます。しかし、アイデアは単純です。ページをロードします。 「更新」ボタンをクリックすると、セッションが設定されます。 61秒待つと、ページが更新され、セッション変数がなくなります。もう一度やり直してください。ただし、数秒後に他の2つのボタンのいずれかをクリックすると、ページが更新されると、セッション変数がajax呼び出しからそのまま残っていることがわかります。この状況でのajax呼び出しは、セッション変数を更新します。