我们的商店正在将 ASP.NET MVC 集成到一个大型 Web 应用程序中,该应用程序利用 web.config 中system.webServer\handlers下定义的自定义和第 3 方 HTTP 处理程序。以这种方式利用 HTTP 处理程序对我们来说非常有用,因为我们不需要重新编译应用程序或将实际的处理程序页面放置在产品的每个实例的 Web 范围内的某个磁盘上。
是否真的有必要在我们的 global.asax 中添加显式忽略路由,以便运行时可以尊重我们在 web.config 中定义的处理程序?我原以为会在检查 system.webServer\handlers 中定义的处理程序之后调用 Web.Routing (而不是相反)。
我们使用模块化设计,允许在添加功能时从 web.config 添加/删除处理程序。随着 MVC 路由的引入,我们似乎需要在 global.asax 文件中为 web.config 中定义的每个可能的处理程序添加忽略路由。
请注意,这些处理程序的实际文件不存在于磁盘上——它们是虚拟的并嵌入在程序集中。这是一个 3rd 方处理程序的示例,它现在需要 global.asax 中的显式忽略路由:
<system.webServer>
<handlers>
<!-- telerik radcontrols -->
<add name="TelerikDialogHandler" verb="*" path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler, Telerik.Web.UI, Version=2009.1.402.20, Culture=neutral, PublicKeyToken=121fae78165ba3d4"></add>
</handlers>
</system.webServer>
因此,作为记录,如果您使用 System.Web.Routing,您必须包含 Web.Config 中指定的 Http 处理程序的忽略路由?或者我做错了什么?