Disable Razors default .cshtml handler in a ASP.NET Web Application


December 2018


2.6k time


Does anyone know how to disable the .cshtml extension completely from an ASP.NET Web Application?

In essence I want to hijack the .cshtml extension and provide my own implementation based on a RazorEngine host, although when I try to access the page.cshtml directly it appears to be running under an existing WebPages razor host that I'm trying to disable.

Note: it looks like its executing .cshtml pages under the System.Web.WebPages.Razor context as the Microsoft.Data Database is initialized. I don't even have any Mvc or WebPages dlls referenced, just System.Web.dll and a local copy of System.Web.Razor with RazorEngine.dll

I've created a new ASP.NET Web .NET 4.0 Application and have tried to clear all buildProviders and handlers as seen below:

    <compilation debug="true" targetFramework="4.0">

        <add path="*" type="MyHandler" verb="*"/>

    <modules runAllManagedModulesForAllRequests="true">
        <add path="*" name="MyHandler" type="MyHandler" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />

Although even with this, when I visit any page.cshtml page it still bypasses My wildcard handler and tries to execute the page itself.

Basically I want to remove all traces of .cshtml handlers/buildProviders/preprocessing so I can serve the .cshtml pages myself, anyone know how I can do this?

2 answers


Вы должны иметь возможность зарегистрировать свой собственный ViewEngineв Application_Startметоде. Скотт Hanselman в блоге образец , который использует пользовательский ViewEngine для мобильных устройств, но идеи должны быть такими же , за то , что вы пытаетесь сделать.

Edit (еще раз) : Дэвид Фоулер предлагает :

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

Я всегда задавался вопросом, что эта настройка была для, но не удосужился расследование! :-)


Если вы пытаетесь отключить веб-страниц ASP.NET, вы можете установить этот флаг в настройках приложения:

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