2011-06-25 16 views
2

ASP.NET Webアプリケーションから.cshtml拡張子を完全に無効にする方法を知っている人はいますか?ASP.NET WebアプリケーションでRazorのデフォルト.cshtmlハンドラを無効にする

本質的に私はRazorEngineホストに基づいて独自の実装を提供したいと思いますが、私がpage.cshtmlに直接アクセスしようとすると、それは既存のWebPagesカミソリホストの下で実行されているように見えますが、 mを無効にしようとしています。

注:それはMicrosoft.Data データベースが初期化されるように、そのが System.Web.WebPages.Razorコンテキスト 下 .cshtmlページを実行するように見えます。私も は、私は新しいASPを作成しました RazorEngine.dll

で任意のMVCやウェブページのDLLを が参照、ただのSystem.Web.dllとSystem.Web.Razorの ローカルコピーを持っていません.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ページを自分で扱うことができるように、.cshtmlハンドラ/ buildProviders/preprocessingのすべての痕跡を削除したいと思います。

答えて

3

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

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

Application_Startメソッドで独自のカスタムViewEngineを登録することができます。モバイルデバイス用のカスタムViewEngineを使用するScott Hanselman blogged a sampleでも、アイデアはあなたがしようとしているものと同じでなければなりません。 (再び)

編集David Fowler suggestsは:

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

私は常にその設定がためだったかと思ったが、調査に周りにやったことがなかったです! :-)

+0

残念ながらSystem.Web.Mvc.ViewEnginesはMVCへの依存性を必要と - 私は本当にすべてのdepsと既存の動作を削除したい。 – mythz

+0

ああ、そうです。あなたは['RazorCodeLanguages.Languages'プロパティ]からcshtmlを削除できますか?(http://msdn.microsoft.com/en-us/library/system.web.razor.razorcodelanguage.languages%28v=vs.99%29.aspx )? –

+0

いいえ、まだ実行しようとしていますが、今この例外が発生します:http://pastebin.com/SPvLfn8G - WebPageHttpModuleのように見えますが、どうやって削除できますか? – mythz

関連する問題