【发布时间】:2011-09-22 17:25:36
【问题描述】:
有谁知道如何从 ASP.NET Web 应用程序中完全禁用 .cshtml 扩展?
本质上,我想劫持 .cshtml 扩展名并基于 RazorEngine 主机提供我自己的实现,尽管当我尝试直接访问 page.cshtml 时,它似乎在我现有的 WebPages razor 主机下运行正在尝试禁用。
注意:看起来它正在执行 .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 handlers/buildProviders/preprocessing 的所有痕迹,这样我就可以自己提供 .cshtml 页面,有人知道我该怎么做吗?
【问题讨论】:
标签: c# asp.net-mvc razor asp.net-webpages