【问题标题】:Access session data from custom RouteHandler?从自定义 RouteHandler 访问会话数据?
【发布时间】:2010-06-26 02:35:04
【问题描述】:

我正在构建此处找到的示例:

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

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

【问题讨论】:

    标签: asp.net-mvc routing


    【解决方案1】:

    我已发布 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

    【讨论】:

      【解决方案2】:

      您有权从 requestContext 访问会话:

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

      【讨论】:

      • 我是空的。唔。我会再尝试。谢谢。
      • 这种方法有效吗?尝试从自定义路由处理程序访问时,我总是得到 null
      • 我在 webforms 中有一个自定义路由处理程序,并且在自定义路由处理程序中访问会话总是返回 null。我认为ProcessRequestmethod 属于IHttpHandler
      猜你喜欢
      • 2017-04-22
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      相关资源
      最近更新 更多