HttpHandler无法在ASP.NET MVC3 Web应用程序中工作

Big*_*gVT 4 asp.net asp.net-mvc httphandler asp.net-mvc-routing asp.net-mvc-3

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

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

<httpHandlers>
  <add verb="*" path="system/heartbeat.aspx"
    type="My.Monitor.HttpHandlers.LoadBalancerHandler, My.Monitor"/>
</httpHandlers>
Run Code Online (Sandbox Code Playgroud)

现在我们正在测试post-MVC3,我得到的异常是:

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

RegisterRoutes在我的方法中定义了一个方法,Global.asax并从中调用该方法Application_Start.在RegisterRoutes我已经得到了IgnoreRoute从Hanselman的博客的声明:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)

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

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

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

Dar*_*rov 10

试试这样:

routes.IgnoreRoute("system/heartbeat.aspx");
Run Code Online (Sandbox Code Playgroud)