【发布时间】:2010-06-26 02:35:04
【问题描述】:
我正在构建此处找到的示例:
我现在想做的是有一些逻辑,在允许显示有效图像之前检查会话中的某些数据。是否可以从自定义 RouteHandler 或任何其他类型的持久数据中访问会话数据?
【问题讨论】:
标签: asp.net-mvc routing
我正在构建此处找到的示例:
我现在想做的是有一些逻辑,在允许显示有效图像之前检查会话中的某些数据。是否可以从自定义 RouteHandler 或任何其他类型的持久数据中访问会话数据?
【问题讨论】:
标签: asp.net-mvc routing
我已发布 solution for this problem 作为另一个问题的答案。
查看应用程序生命周期概览 (https://msdn.microsoft.com/en-us/library/bb470252(v=vs.140).aspx),特别是 请求由 HttpApplication 管道处理的行。 在生命周期阶段表中。
而您的IRouteHandler 对象的函数GetHttpHandler 在管道的阶段10(引发 MapRequestHandler 事件。)中调用,Session在第 12 阶段恢复(引发 AcquireRequestState 事件。)。这就是为什么您无法在 GetHttpHandler 函数期间访问 Session 变量并且RequestContext.HttpContext.Session 始终为null。
【讨论】:
您有权从 requestContext 访问会话:
private static void ProcessRequest(RequestContext requestContext)
{
var session = requestContext.HttpContext.Session;
【讨论】:
ProcessRequestmethod 属于IHttpHandler