处理通用http处理程序中的会话超时

时间:2012-12-25 04:21:22

标签: asp.net session httphandler form-authentication

我有一个应用程序,http generic handler使用大约20 ajax call个。{ 我使用IReadOnlySessionState来访问我的处理程序中的会话。一切正常。

但是当会话到期时,我的处理程序返回一些html,因为它重定向到默认页面,默认页面的html会在响应中发回。

解决这个问题。
我检查了处理程序中的会话变量,如果它是null,我写了

 context.Response.Write("logout")

我检查jQuery ajax天气它是注销还是别的什么。

  $.ajax({
            url: "myhandler.ashx",
            contentType: "application/json; charset=utf-8",
            success: function (data) { checklogout(data); $("#loading").hide(); },
            error: function () { $("#loading").hide(); },
            async: false
         });


如果是注销,那么我使用位置重定向到登录页面。
我正在使用form-authentication来验证用户身份。

是否有更好的方法可以使用jquery-ajax调用来检查和重定向到登录页面。

1 个答案:

答案 0 :(得分:2)

您的处理程序位于通过asp.net身份验证自动控制的目录中。

我应该做的是不要通过web.config上的设置通过asp.net身份验证自动控制,这样对处理程序的调用将完成以太用户不在以太网中登录,并且在处理程序内我将检查为此,如果调用该处理程序的用户具有会话和身份验证。

然后,在用户没有认证来读取该处理程序的情况下,我将一个简单的标志返回到我的ajax调用,然后识别并进行重定向,例如:

$.ajax({
    url: "myhandler.ashx",
    contentType: "application/json; charset=utf-8",
    success: function (data) 
    { 
        if(data.redirectToLogin == true)
        {
            window.location = "/login.aspx"
        }
        else
        {
            // do the rest job
        }
    },
    error: function () 
    { 
        $("#loading").hide(); 
    }
 });