4

我最近采用了现有的ASP.NET 3.5 Web窗体应用程序,该应用程序去年升级到.NET 4(并且一直运行正常)并将其配置为也运行ASP .NET MVC3关注Scott Hanselman的博文:Integrating ASP.NET MVC 3 into existing upgraded ASP.NET 4 Web Forms applications。它运行良好,我已经成功地开始引入基于Razor的观点,并且现有的aspx页面继续工作。HttpHandler不能在ASP.NET MVC3 web应用程序中工作

但是,停止工作的一件事是自定义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

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

回答

9

尝试这样的:

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

谢谢,达林,似乎已经采取了照顾它。我仍然不明白为什么'routes.IgnoreRoute(“{resource} .aspx/{* pathInfo}”);'没有做到这一点 - 但只要东西有效,我就可以生存下来。 – BigPigVT 2011-04-01 17:19:32

+0

@BigPigVT,[以下博客文章](http://weblogs.asp.net/pjohnson/archive/2010/11/11/mvc-s-ignoreroute-syntax.aspx)提供了关于IgnoreRoute的一个很好的见解扩展方法。 – 2011-04-01 17:22:35

相关问题