【问题标题】:ASP.NET Routing - Do Custom Routes COMPLETELY SKIP Everything in the Global.asax?ASP.NET 路由 - 自定义路由是否完全跳过 Global.asax 中的所有内容?
【发布时间】:2010-09-28 20:26:51
【问题描述】:

我有一个简单的 ASP.NET 3.5 SP1 Web 窗体应用程序...我添加了 System.Web.Routing DLL,并创建了一个简单的路由,该路由返回一个标准 ASP.NET 页面作为“IHttpHandler ”。

一切都很好...除了 HttpContext.Current.User 是 null ???

所以,我做了更多的挖掘工作(我在 Global.asax 文件中的所有事件中都设置了断点)。通常,这些断点会被命中(当我导航到标准的“.aspx”页面时):

  • Application_BeginRequest
  • Application_AuthenticateRequest
  • Application_EndRequest

但是,当使用 ASP.NET 路由时……这些事件都没有触发。我错过了什么吗?

【问题讨论】:

    标签: asp.net webforms routing


    【解决方案1】:

    假设您使用的是 IIS6,另一种方法是定义一个“通配符”扩展处理程序。将这个简单的“包罗万象”映射添加到 IIS6 将使它能够处理您的无扩展请求。默认情况下,.NET 安装程序将“.aspx”映射到 aspnet_isapi.dll——这就是 .aspx 扩展工作的原因。要将没有扩展的请求映射到 APS.NET 引擎,您必须告诉 IIS 查看每个请求

    这里有一篇解释该过程的快速文章:

    http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

    希望这有助于减少您的网址的“蹩脚”因素。 :)

    -托德

    【讨论】:

      【解决方案2】:

      找到了怪诞离奇(和愚蠢)的答案:)

      如果您不将“.aspx”添加到路由的末尾,则 Global.asax 中不会触发任何内容,这意味着您不会收到任何 BeginRequest、AuthenticateRequest、EndRequest 等...而且,您不会t 获取 SessionState 或任何东西。

      所以,“修复”对我来说只是改变我的路线:

      RouteTable.Routes.Add("Blah", new Route("Blah/{reportName}", new MyHandler());
      

      到这里:

      RouteTable.Routes.Add("Blah", new Route("Blah/{reportName}.aspx", new MyHandler());
      

      多么蹩脚:) ...但它仍然是一个修复!

      【讨论】:

      • IIS 版本?如果不在 IIS7 上,您将无法获得集成管道。
      【解决方案3】:

      当你说

      “如果您不将“.aspx”添加到您的路线末尾,则 Global.asax 中不会触发任何内容,这意味着您不会收到任何 BeginRequest、AuthenticateRequest、EndRequest 等...此外,您不需要'没有得到 SessionState 或任何东西。"

      IIS 会将此类请求记录在日志文件中还是只是匿名的?应用程序变量和 ViewState 呢?

      对不起,我还没有测试过,只是问你是否已经知道?

      【讨论】:

        【解决方案4】:

        我已经检查了应用程序变量和 Viewstate,这两个显然都在工作.. 不确定服务器日志:S

        【讨论】:

          猜你喜欢
          • 2011-01-10
          • 2012-07-27
          • 1970-01-01
          • 1970-01-01
          • 2020-01-04
          • 2011-04-02
          • 2020-04-15
          • 2013-03-13
          • 1970-01-01
          相关资源
          最近更新 更多