gpt4 book ai didi

asp.net - 我可以使用 Razor 提供 .html 文件,就好像它们是 .cshtml 文件一样,而不更改所有页面的扩展名吗?

转载 作者:行者123 更新时间:2023-12-02 11:38:33 24 4
gpt4 key购买 nike

我管理一个大型 asp.net 站点,该站点之前已从静态 html 站点转换为 asp.net。

出于多种原因(主要是 SEO),我们决定在最初转换网站时不再将所有文件重命名为 .aspx。只需将 buildProvider 和 httpHandler 添加到 web.config 即可轻松完成此操作。

<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider"/>
</buildProviders>

<httpHandlers>
<add path="*.html" verb="*" type="System.Web.UI.PageHandlerFactory"/>
</httpHandlers>

现在我正在升级站点以使用带有 Razor cshtml 文件的 Asp.net 网页。如果需要,我可以重命名所有文件,并使用 url 重写来使 url 保持不变,但是如果我可以配置 web.config 以告诉它解析 .html 文件,就好像它们是 .cshtml 一样,会容易得多.

我已经搜索了很多,但找不到任何与 Razor 页面的 PageHandlerFactory 等效的东西。看起来好像它只是 .net 4.0 ISAPI 处理程序中的一个内部机制。

该网站目前在 Windows 2003 服务器和 IIS 6 上运行。我们将在不久的将来升级到 2008/IIS 7.5,但我不想等待。

有什么方法可以让 razor 解析 .html 文件,就好像它们是 .cshtml 文件一样吗?

最佳答案

感谢 SLAks 为我指明了正确的方向,但我仍然花了几个小时挖掘 MVC 源代码才找到解决方案。

1 - 需要将 RazorBuildProvider 放入 web.config

<buildProviders>
<add extension=".html" type="System.Web.WebPages.Razor.RazorBuildProvider"/>
</buildProviders>

并将 System.Web.WebPages.Razor 添加到程序集中(如果尚不存在)。

<assemblies>
[...]
<add assembly="System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>

2 - 在 global.asax Application_Start() 方法中添加 2 行

// Requires reference to System.Web.WebPages.Razor
System.Web.Razor.RazorCodeLanguage.Languages.Add(
"html", new CSharpRazorCodeLanguage());

WebPageHttpHandler.RegisterExtension("html");

关于asp.net - 我可以使用 Razor 提供 .html 文件,就好像它们是 .cshtml 文件一样,而不更改所有页面的扩展名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5110970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com