我最近采用了一个现有的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.
我该怎么做才能阻止路由系统尝试处理该地址,以便自定义处理程序可以做到这一点?任何帮助表示赞赏。
答案 0 :(得分:9)
试试这样:
routes.IgnoreRoute("system/heartbeat.aspx");