我们的工作室正在将ASP.NET MVC集成到一个大型Web应用程序中,该应用程序利用在system.webServer\handlers下的web.config中定义的自定义和第三方HTTP处理程序.以这种方式利用HTTP处理程序对我们来说非常好,因为我们不需要重新编译应用程序,也不需要将实际处理程序页面放在Web范围内的磁盘上,以用于每个产品实例.
是否真的有必要在我们的global.asax中添加显式的忽略路由,以便运行时可以遵守web.config中定义的处理程序?我认为在检查了system.webServer\handlers中定义的处理程序之后会调用Web.Routing (而不是相反).
我们使用模块化设计,允许在添加功能时从web.config添加/删除处理程序.随着MVC路由的引入,我们需要在global.asax文件中为web.config中定义的每个可能的处理程序添加忽略路由.
请注意,磁盘上不存在这些处理程序的实际文件 - 它们是虚拟的并嵌入在程序集中.以下是第三方处理程序的示例,现在需要在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>
Run Code Online (Sandbox Code Playgroud)
因此,对于记录,如果您使用System.Web.Routing,则必须包含在Web.Config中指定的Http Handler的忽略路由?或许我做错了什么?