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

时间:2011-04-01 17:03:01

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

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

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

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

现在我们正在测试post-MVC3,我得到的例外情况是:

  

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

我已在RegisterRoutes中定义了Global.asax方法,并且该方法是从Application_Start调用的。在RegisterRoutes内,我收到了Hanselman博客的IgnoreRoute声明:

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

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

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

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

1 个答案:

答案 0 :(得分:9)

试试这样:

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