Kev*_*wis 10 asp.net iis-6 razor
我管理一个大型的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 WebPages.如果需要的话我可以重命名的所有文件,并使用URL重写,使网址保持不变,但它会容易得多,如果我可以只配置在web.config告诉它,就好像他们是.cshtml解析HTML文件.
我已经搜索了很多,并且找不到与剃刀页面的PageHandlerFactory等效的内容.它看起来好像只是.net 4.0 ISAPI处理程序中的内部机制.
该网站目前正在Windows 2003服务器和IIS 6上运行.我们将在不久的将来升级到2008/IIS 7.5,但我不想等待.
有没有办法让.html文件被razor解析,好像它们是.cshtml文件一样?
Kev*_*wis 17
感谢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");
调用WebPageHttpHandler.RegisterExtension.
您可能还需要注册一个自定义WebPageRazorHostFactory来告诉Razor引擎如何处理该文件; 我不确定.