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之外我还需要调用其他东西,或者问题可能完全不同.
更新:我的开发环境正在使用集成管道模式,但我需要检查我的生产环境是否支持它.
如果你这样做:
routes.RouteExistingFiles = true;
Run Code Online (Sandbox Code Playgroud)
您应该会发现这有效 - 即使没有添加处理程序.在控制器中,您可以使用方法直接加载HTML 并使用它执行某些操作 - 或者更好HostingEnvironment.VirtualPathProvider的GetFile方法是使用普通的MVC视图,该视图呈现与静态文件相同的内容,只需添加内容即可.
虽然请注意,这意味着任何可能被任何路由捕获的文件都将被推送到MVC管道中.然而,如果使用路线和物理路径的适当分离,这通常不是问题.
| 归档时间: |
|
| 查看次数: |
3115 次 |
| 最近记录: |