3

ASP.NET Web アプリケーションから .cshtml 拡張子を完全に無効にする方法を知っている人はいますか?

本質的には、.cshtml 拡張機能をハイジャックし、 RazorEngineホストに基づいて独自の実装を提供したいのですが、page.cshtml に直接アクセスしようとすると、無効にしようとしている既存の WebPages razor ホストで実行されているように見えます。 .

注: Microsoft.Data データベースが初期化されると、System.Web.WebPages.Razor コンテキストで .cshtml ページが実行されているように見えます。Mvc または WebPages dll を参照していません。System.Web.dll と、RazorEngine.dll を使用した System.Web.Razor のローカル コピーだけです。

新しい 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 ページを自分で提供できるようにしたいのですが、これを行う方法を知っている人はいますか?

4

2 に答える 2

3

ASP.NET Web ページをオフにしようとしている場合は、アプリの設定で次のフラグを設定できます。

<add key="webpages:Enabled" value="false" />
于 2011-06-27T01:15:03.153 に答える
2

メソッドに独自のカスタムViewEngineを登録できるはずです。Application_StartScott Hanselmanは、モバイル デバイス用のカスタム ViewEngine を使用するサンプルをブログに投稿しましたが、アイデアはあなたがしようとしていることと同じであるはずです。

編集(再度)David Fowlerが提案

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

その設定は何のためにあるのだろうといつも思っていましたが、調査することはできませんでした! :-)

于 2011-06-25T20:12:00.443 に答える