【问题标题】:HttpHandler not working in ASP.NET MVC3 web applicationHttpHandler 在 ASP.NET MVC3 Web 应用程序中不起作用
【发布时间】:2011-07-27 20:30:45
【问题描述】:

我最近采用了一个现有的 ASP.NET 3.5 Web 表单应用程序,该应用程序去年升级到 .NET 4(并且一直运行良好),并将其配置为也运行 ASP.NET MVC3,遵循 Scott Hanselman 的博客文章:@ 987654321@。它运行良好,我已经成功开始引入基于 Razor 的视图,并且现有的 aspx 页面继续工作。

然而,停止工作的一件事是自定义 HttpHandler(我们的负载均衡器会访问特定地址以确保应用程序可用 - 处理程序用于该地址)。 web.config 总是在 system.web 部分声明处理程序,如下所示:

<httpHandlers>
  <add verb="*" path="system/heartbeat.aspx"
    type="My.Monitor.HttpHandlers.LoadBalancerHandler, My.Monitor"/>
</httpHandlers>

现在我们正在测试 MVC3 后,我收到一个异常,内容如下:

路径控制器 '/system/heartbeat.aspx' 未找到 或者不实现 IController。

我在Global.asax 中定义了一个RegisterRoutes 方法,该方法是从Application_Start 调用的。在RegisterRoutes 内,我有来自 Hanselman 博客的 IgnoreRoute 声明:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");

我认为这是为了防止路由系统采用扩展名为 .aspx 的任何内容。

我在调试时可以在 VS2010 中重现该问题,并且部署环境正在运行 IIS 6。

我可以做些什么来阻止路由系统尝试处理该地址,以便自定义处理程序可以做到这一点?任何帮助表示赞赏。

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing httphandler


    【解决方案1】:

    试试这样:

    routes.IgnoreRoute("system/heartbeat.aspx");
    

    【讨论】:

    • 谢谢,达林,这似乎已经解决了。我仍然不明白为什么 routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); 没有做到这一点 - 但只要东西有效,我就可以忍受神秘。
    • @BigPigVT,following blog post 提供了有关IgnoreRoute 扩展方法的良好见解。
    猜你喜欢
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多