页面中有一个IsLogin()方法,用以判断该请求的触发者是否登录,如果登录了,则执行查询操作,如果没有登录,则Redirect()至登录界面
页面使用了较多的Ajax请求来获取数据,而在Ajax请求中,若运行至Context.Response.Redirect()则出错。
网上的一些资料给出的解决方案是在Ajax请求中增加一个状态码,然后人为的去获取该状态码,进行重定向。
IsLogin()方法需要同时处理普通请求与Ajax请求,所以,在处理之前,应当知道当前请求是否为Ajax请求。
参考了网上的资料:http://www.cnblogs.com/sosoft/p/3793425.html
http://code.iteye.com/blog/1458364
http://www.cnblogs.com/sosoft/p/3793425.html
在登陆判断之前,先判断该请求是否为Ajax请求,如果不是,直接重定向,如果是,则由JavaScript进行重定向。代码如下
HttpContext context = HttpContext.Current; bool isAjaxRequest; try { string ss = context.Request.Headers["X-Requested-With"]; isAjaxRequest = (ss != null && ss == "XMLHttpRequest") ? true : false; } catch (System.Exception ex) { isAjaxRequest = false; }