请求.html文件时调用ASP.NET MVC控制器

Cra*_*ker 5 asp.net-mvc asp.net-routing

我需要为遗留应用程序添加一些新的生命:)

我想在请求"静态"HTML页面时调用MVC控制器,以便在将页面返回到客户端之前向页面添加一些标记.

我试着按照这个帖子中的方法:如何阅读.html页面中的web.config设置?

...但即使我定义了这条路线:

routes.MapRoute(
    name: "Topic", 
    url: "html/{fileName}.html", 
    defaults: new { controller = "Topic", action = "Index" });
Run Code Online (Sandbox Code Playgroud)

控制器未被调用.我的web.config定义为:

<remove name="WebServiceHandlerFactory-Integrated" />
<add name="HTML" path="*.html" verb="*" 
    type="System.Web.UI.PageHandlerFactory" 
    resourceType="File" preCondition="integratedMode" />
Run Code Online (Sandbox Code Playgroud)

我怀疑除了PageHandlerFactory之外我还需要调用其他东西,或者问题可能完全不同.

更新:我的开发环境正在使用集成管道模式,但我需要检查我的生产环境是否支持它.

And*_*tan 6

如果你这样做:

routes.RouteExistingFiles = true;
Run Code Online (Sandbox Code Playgroud)

您应该会发现这有效 - 即使没有添加处理程序.在控制器中,您可以使用方法直接加载HTML 并使用它执行某些操作 - 或者更好HostingEnvironment.VirtualPathProviderGetFile方法是使用普通的MVC视图,该视图呈现与静态文件相同的内容,只需添加内容即可.

虽然请注意,这意味着任何可能被任何路由捕获的文件都将被推送到MVC管道中.然而,如果使用路线和物理路径的适当分离,这通常不是问题.