在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 Web应用程序中禁用Razors-default.cs.html处理程序

如果您试图关闭ASP.NET网页,您可以在应用程序设置中设置此标志:

<add key="webpages:Enabled" value="false" />

您应该能够在Application_Start方法中注册自己的自定义ViewEngine。Scott Hanselman在博客中发布了一个示例,该示例为移动设备使用自定义ViewEngine,但对于您尝试做的事情,想法应该是相同的

编辑(再次):David Fowler建议:

<add key="webpages:Enabled" value="false" />

我一直想知道那个场景是为了什么,但从来没有抽出时间来调查!:-)