【发布时间】: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