Отключить Razors по умолчанию .cshtml обработчик в веб-приложении ASP.NET - PullRequest
2 голосов
/ 25 июня 2011

Кто-нибудь знает, как полностью отключить расширение .cshtml в веб-приложении ASP.NET?

По сути, я хочу перехватить расширение .cshtml и предоставить собственную реализацию на основе RazorEngine host, хотя, когда я пытаюсь получить доступ к page.cshtml напрямую, он, кажется, работает под существующим хостом бритвы WebPages, который я пытаюсь отключить.

Примечание: похоже, еговыполнение страниц .cshtml в контексте System.Web.WebPages.Razor при инициализации базы данных Microsoft.Data.У меня даже нет ссылок на dll Mvc или WebPages, только 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, кто-нибудь знает, как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 27 июня 2011

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

<add key="webpages:Enabled" value="false" />
2 голосов
/ 26 июня 2011

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

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

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

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

...