này sẽ phụ thuộc vào rất nhiều yếu tố vì vậy tôi đề nghị bạn chạy một thử nghiệm như dưới đây. Nó thực sự mất ít hơn 5 phút để tìm hiểu xem tình hình chính xác của bạn có hoạt động trong môi trường của bạn hay không. Đây là mã của tôi mà tôi đã sử dụng để kiểm tra điều này, tôi sử dụng các điều khiển Telerik để kiểm tra ý tưởng nhưng tôi đã thêm một .get để có được câu trả lời chính xác mà bạn muốn. trang aspx có
<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>
.trang cs có
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.";
}
--- bạn có thể sắp xếp ở trên để phù hợp với tình huống của mình. Nhưng ý tưởng thì đơn giản. Bạn tải trang. Nhấp vào nút "Gia hạn" và điều này sẽ đặt phiên của bạn. Đợi 61 giây và trang sẽ làm mới và biến phiên đã biến mất. Thử lại lần nữa nhưng lần này click vào một trong hai nút khác sau vài giây và khi trang làm mới, bạn sẽ thấy rằng các biến session đã ở lại nguyên vẹn từ các cuộc gọi ajax. Cuộc gọi ajax trong tình huống này làm mới biến phiên.
Nguồn
2012-05-05 19:38:43
Tôi nêu câu hỏi này: http: //stackoverflow.com/questions/10432428/session-timeout-on-sqlserver-mode-inside-ajax-updatepanel –
Sử dụng fiddler hoặc f12 trong ví dụ. Bạn sẽ thấy rằng tất cả các cookie (bao gồm cả cookie phiên) được gửi ngay cả các cuộc gọi AJAX. Vì vậy, máy chủ nhận thức được hoạt động. Câu chuyện dài ngắn, ajax hoặc không ajax, phiên được mở rộng với hoạt động của người dùng. – Arcturus