在ASP.NET Web应用程序中禁用Razors-default.cs.html处理程序
本文关键字:cs Razors-default html 处理 程序 NET ASP Web 应用程序 | 更新日期: 2023-09-27 18:00:18
有人知道如何从ASP.NET Web应用程序中完全禁用.cs.html扩展吗?
本质上,我想劫持.cs.html扩展,并基于RazorEngine主机提供我自己的实现,尽管当我试图直接访问page.cshtml时,它似乎是在我试图禁用的现有WebPages剃刀主机下运行的。
注意:它看起来像是在执行下的.cs.html页面System.Web.WebPages.Razor上下文作为Microsoft.Data数据库已初始化。我甚至都不知道有任何Mvc或网页dll引用,只有System.Web.dll和带有的System.Web.Razor的本地副本RazorEngine.dll
我已经创建了一个新的ASP.NET Web.NET 4.0应用程序,并尝试清除所有构建提供程序和处理程序,如下所示:
<system.web>
<httpModules>
<clear/>
</httpModules>
<compilation debug="true" targetFramework="4.0">
<buildProviders>
<clear/>
</buildProviders>
</compilation>
<httpHandlers>
<clear/>
<add path="*" type="MyHandler" verb="*"/>
</httpHandlers>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<clear/>
</modules>
<handlers>
<clear/>
<add path="*" name="MyHandler" type="MyHandler" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
</handlers>
</system.webServer>
尽管如此,当我访问任何page.cshtml页面时,它仍然会绕过我的通配符处理程序,并尝试执行页面本身。
基本上,我想删除.cshtml处理程序/buildProviders/preprocessing的所有痕迹,这样我就可以自己提供.cshhtml页面了,有人知道我该怎么做吗?
如果您试图关闭ASP.NET网页,您可以在应用程序设置中设置此标志:
<add key="webpages:Enabled" value="false" />
您应该能够在Application_Start
方法中注册自己的自定义ViewEngine
。Scott Hanselman在博客中发布了一个示例,该示例为移动设备使用自定义ViewEngine,但对于您尝试做的事情,想法应该是相同的
编辑(再次):David Fowler建议:
<add key="webpages:Enabled" value="false" />
我一直想知道那个场景是为了什么,但从来没有抽出时间来调查!:-)