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

相關問題