【发布时间】:2016-10-17 04:49:43
【问题描述】:
我们有一个网络应用程序,它将每 30 秒对服务器进行一次 AJAX 调用,以更新页面中的值。该应用程序本身是 MVC 和 Web 表单的混合体(该应用程序的一部分已升级到 MVC,而另一部分仍然是旧版)。 AJAX 调用的问题在于它将重置会话超时,基本上不允许用户超时。我发现的一个解决方法来自这个答案 (Disable Session state per-request in ASP.Net MVC),它是创建一个不使用 Session 的新处理程序。这应该可以解决问题。
虽然我的第二个问题是,对于使用此“无会话”处理程序的唯一控制器,应用程序似乎没有遵循我的新路由规则:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "FirstController", action = "Index", id = UrlParameter.Optional }
);
routes.Add("Sessionless", new Route("SessionlessController/SessionlessAction/{id}",
new RouteValueDictionary(new { id= UrlParameter.Optional }),
new SessionlessHandler()));
我的处理程序上有一个断点,但应用程序似乎没有转到处理程序:
public class SessionlessHandler: IRouteHandler {
public IHttpHandler GetHttpHandler(RequestContext requestContext) {
return null;
}
}
我希望只有我的“无会话”控制器将使用此自定义处理程序,而所有其他控件使用默认值。
【问题讨论】:
-
在顶部添加最具体的路线,在底部添加通用路线
标签: c# asp.net ajax asp.net-mvc session