如何在asp.net 4.0中尽可能长时间地维护会话状态

本文关键字:长时间 尽可能 维护 会话状态 asp net | 更新日期: 2023-09-27 18:01:48

我只是想让会话尽可能长。在这里,我展示了我的代码如何使用asp.net 4.0和c#使用ashx文件尽可能长地维护会话。

这是我的礼物。文件:

<%@ WebHandler Language="C#" Class="keepalive" %>
using System;
using System.Web;
using System.Web.SessionState;
public class keepalive : IHttpHandler, IRequiresSessionState
{
    public void ProcessRequest(HttpContext context)
    {
        if (context.User.Identity.IsAuthenticated)
        {
            // authenticated sessions
            context.Response.ContentType = "text/plain";
            context.Response.Write("Auth:" + context.Session.SessionID);
        }
        else
        {
            // guest
            context.Response.ContentType = "text/plain";
            context.Response.Write("NoAuth:" + context.Session.SessionID);
        }
    }
    public bool IsReusable {
        get {
            return false;
        }
    }
}

和这里是我的调用代码从主页:

<script type="text/javascript">
        var interval = null;
        (function () {
            // keep me alive
            interval = setInterval(function () {
                $.get('../keepalive.ashx', function (d) {
                    $('#response').append(d + '<br/>');
                });
            }, 30000);
        })();

        // If we want to stop the interval....
        function Stop() {
            clearInterval(interval);
        }
</script>

和我改变一些属性从web配置:

 <sessionState mode="InProc" cookieless="false" timeout="2"/>

为什么这段代码不能满足我的需要…

如何在asp.net 4.0中尽可能长时间地维护会话状态

您可以通过web为应用程序配置超时值。配置(你已经做了2分钟)如下

<configuration>
    <system.web>
      ...
      <sessionState timeout="525600 "/>
    </system.web>
</configuration>

或者您也可以在所有应用程序的服务器上设置它,通过设置IIS配置在IIS站点

<location path="Default Web Site">
   <system.webServer>
      <asp>
         <session allowSessionState="true" max="1000" timeout="525600" />
      </asp>
   </system.webServer>
</location>