有没有人知道如何从ASP.NET Web应用程序中完全禁用.cshtml扩展名?
本质上我想劫持.cshtml扩展并基于RazorEngine主机提供我自己的实现,但是当我尝试直接访问page.cshtml时,它似乎在现有的WebPages剃刀主机下运行我正试图禁用。
注意:它看起来像是在执行 .cshtml页面下 System.Web.WebPages.Razor上下文 作为Microsoft.Data 数据库已初始化。我甚至没有 有任何Mvc或WebPages dll 引用,只是System.Web.dll和 System.Web.Razor的本地副本 RazorEngine.dll
我创建了一个新的ASP.NET Web .NET 4.0应用程序,并尝试清除所有buildProviders和处理程序,如下所示:
<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的所有痕迹,这样我就可以自己提供.cshtml页面了,有谁知道我怎么做?
答案 0 :(得分:3)
如果您要关闭ASP.NET网页,可以在应用设置中设置此标记:
<add key="webpages:Enabled" value="false" />
答案 1 :(得分:2)
您应该可以在ViewEngine
方法中注册自己的自定义Application_Start
。 Scott Hanselman blogged a sample使用自定义ViewEngine用于移动设备,但这些想法应该与您尝试的内容相同。
编辑(再次):David Fowler suggests:
<add key="webpages:Enabled" value="false" />
我总是想知道那个设置是什么,但从来没有开始调查! : - )