第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

保持ASP.NET會話打開/激活

保持ASP.NET會話打開/激活

慕田峪9158850 2019-07-22 15:31:48
保持ASP.NET會話打開/激活只要用戶打開瀏覽器窗口,哪種最簡單、最不引人注意的方式可以使ASP.NET會話保持活動?它是定時的Ajax調(diào)用嗎?我想防止以下情況:有時用戶將窗口打開很長時間,然后輸入一些內(nèi)容,而提交則不再有效,因為服務(wù)器端會話過期了。我不想在服務(wù)器上增加超過10分鐘的超時值,因為我希望關(guān)閉會話(通過關(guān)閉瀏覽器窗口)來快速超時。建議代碼樣本?
查看完整描述

3 回答

?
慕無忌1623718

TA貢獻1744條經(jīng)驗 獲得超4個贊

如果您正在使用ASP.NETMVC-您不需要額外的HTTP處理程序和web.config文件的一些修改。您所需要的只是在Home/公共控制器中添加一些簡單的操作:

[HttpPost]public JsonResult KeepSessionAlive() {
    return new JsonResult {Data = "Success"};}

,編寫一段類似于此的JavaScript代碼(我已將其放入站點的一個JavaScript文件中):

var keepSessionAlive = false;var keepSessionAliveUrl = null;function SetupSessionUpdater(actionUrl) {
    keepSessionAliveUrl = actionUrl;
    var container = $("#body");
    container.mousemove(function () { keepSessionAlive = true; });
    container.keydown(function () { keepSessionAlive = true; });
    CheckToKeepSessionAlive();}function CheckToKeepSessionAlive() {
    setTimeout("KeepSessionAlive()", 300000);}function KeepSessionAlive() {
    if (keepSessionAlive && keepSessionAliveUrl != null) {
        $.ajax({
            type: "POST",
            url: keepSessionAliveUrl,
            success: function () { keepSessionAlive = false; }
        });
    }
    CheckToKeepSessionAlive();}

,并通過調(diào)用JavaScript函數(shù)初始化此功能:

SetupSessionUpdater('/Home/KeepSessionAlive');

請注意!我只為授權(quán)用戶實現(xiàn)了此功能(在大多數(shù)情況下,沒有理由讓來賓保持會話狀態(tài)),而保持會話狀態(tài)活動的決定不僅基于-是否打開瀏覽器,而且授權(quán)用戶必須在站點上進行一些活動(移動鼠標(biāo)或鍵入某個鍵)。


查看完整回答
反對 回復(fù) 2019-07-22
?
素胚勾勒不出你

TA貢獻1827條經(jīng)驗 獲得超9個贊

每當(dāng)您向服務(wù)器提出請求時,會話超時都會重置。因此,您只需對服務(wù)器上的空HTTP處理程序進行Ajax調(diào)用,但確保禁用處理程序的緩存,否則瀏覽器將緩存處理程序,不會發(fā)出新的請求。

KeepSessionAlive.ashx.cs

public class KeepSessionAlive : IHttpHandler, IRequiresSessionState
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            context.Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
            context.Response.Cache.SetNoStore();
            context.Response.Cache.SetNoServerCaching();
        }
    }

.JS:

window.onload = function () {
        setInterval("KeepSessionAlive()", 60000)}

 function KeepSessionAlive() {
 url = "/KeepSessionAlive.ashx?";
        var xmlHttp = new XMLHttpRequest();
        xmlHttp.open("GET", url, true);
        xmlHttp.send();
        }

@veggerby-不需要在會話中存儲變量的開銷。僅僅預(yù)先向服務(wù)器發(fā)送一個請求就足夠了。


查看完整回答
反對 回復(fù) 2019-07-22
  • 3 回答
  • 0 關(guān)注
  • 452 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號