日期:2014-05-16  浏览次数:22757 次

求助大家一个关于httphandler的问题,请大家一定帮我 - Web 开发 / Ajax
我用ihttphandler来坐拦截,实现功能如下:
拦截目标*.aspx
一旦拦截成功,则检查session,如果session没有问题,坐允许访问,否则返回首页

问题:
一旦拦截成功,则检查session,如果session没有问题,坐允许访问

这里造成了死循环。。。。
例如登陆成功后,访问main.aspx,已经存在session,允许通过,结果又跑到httphandler里面了,一直死循环,如何在通过后不再进入httphandler里面?

 
C# code
   public void ProcessRequest(HttpContext context)
        {
            if (context.Request.Url.AbsolutePath.ToLower().IndexOf(".aspx") > -1)
            {
                string myPage = context.Request.Url.Segments[context.Request.Url.Segments.Length - 1].ToLower();
                if (myPage.ToLower() != Common.DefaltPage.ToLower() && Common.SessionUserData == null)
                {
                    context.Response.Write("<script type=\"text/javascript\">alert(\"连接超时,请重新登陆或非正常登陆!\");</script>");
                    context.Response.Write("<script type=\"text/javascript\">top.location.href='http://" + context.Request.Url.Authority + context.Request.ApplicationPath + Common.DefaltPage + "';</script>");
                    context.Response.End();
                }
                else
                {
                    context.Response.Redirect(context.Request.RawUrl, true);    //死循环。。。老跑进httphandler里面来


                    //这个方法可以通过,但是不支持.aspx?xxx的格式,不允许?xxxx格式
                    //IHttpHandler handle = PageParser.GetCompiledPageInstance(context.Request.RawUrl, context.Request.PhysicalPath, context);
                    //context.Server.Transfer(handle, true);
                }
            }
        }




------解决方案--------------------
在aspx页面检查session就好了。。干嘛要用ahsx。。。O__O"…

ashx进行转向又会执行你web.config里面配置的处理函数的了。不死循环都难