从自定义RouteHandler访问会话数据?

时间:2010-06-26 02:35:04

标签: asp.net-mvc routing

我正在建立在这里找到的例子:

http://www.mikesdotnetting.com/Article/126/ASP.NET-MVC-Prevent-Image-Leeching-with-a-Custom-RouteHandler

我现在要做的是在允许有效图像显示之前有一些逻辑检查会话中的某些数据。是否可以从自定义RouteHandler或任何其他类型的持久数据中访问会话数据?

2 个答案:

答案 0 :(得分:2)

  

我已发布solution for this problem作为另一个问题的答案。

查看应用程序生命周期概述(https://msdn.microsoft.com/en-us/library/bb470252(v=vs.140).aspx),特别是行请求由HttpApplication管道处理。表生命周期阶段。

然后在管道的阶段10 (提升MapRequestHandler事件。)中调用GetHttpHandler对象的函数 IRouteHandler 会话在阶段12中恢复(提升AcquireRequestState事件。)。这就是为什么你不能在GetHttpHandler函数中访问Session变量,而RequestContext.HttpContext.Session总是null

答案 1 :(得分:1)

您可以直接从requestContext访问会话:

private static void ProcessRequest(RequestContext requestContext)
{
   var session = requestContext.HttpContext.Session;