Cassette も Microsoft.AspNet.Web.Optimization (既定で MVC4 プロジェクトに含まれるバンドル ソリューション) も、ASP.NET MVC に依存していないようです。したがって、どちらのソリューションも、ServiceStack の AppHost 実装で動作するように作成できます。
カセットの場合:
NuGet から以下をインストールすると、すべて問題なく動作します。
ServiceStack.Host.AspNet
ServiceStack.Razor
Cassette.Aspnet
...そして、通常どおり Razor 'cshtml' ファイルから Cassette を使用します。
数分間頭を悩ませた小さな落とし穴:
HttpHandlers が web.config にリストされている順序は重要です。このServiceStack.Host.AspNet
パッケージは、ワイルドカードを使用する HttpHandler パスを追加します。これは、 のようなそれ以上の HttpHandler にCassette.axd
は到達しないことを意味します。
web.config の順序を次のように変更するだけです。
<httpHandlers>
<add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
<add path="cassette.axd" verb="*" type="Cassette.Aspnet.CassetteHttpHandler, Cassette.Aspnet" />
</httpHandlers>
に:
<httpHandlers>
<add path="cassette.axd" verb="*" type="Cassette.Aspnet.CassetteHttpHandler, Cassette.Aspnet" />
<add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
</httpHandlers>
問題を修正しました。最初に Nuget から Cassette.Aspnet をインストールしたことが、この問題の発生を最初から防いでいたかどうかはわかりません。
Microsoft.AspNet.Web.Optimization の場合:
NuGet から、以下をインストールします。
ServiceStack.Host.AspNet
ServiceStack.Razor
Microsoft.AspNet.Web.最適化
これを行うと、Microsoft.AspNet.Web.Optimization のバンドルと縮小を通常どおり使用できます。
BundleConfig.cs
デフォルトの MVC4 プロジェクトで見られる規則に従って、ファイルを追加しました。次にBundleConfig.RegisterBundles(BundleTable.Bundles);
、ServiceStack AppHost ファイルから呼び出します。
その後、@Scripts.Render()
Razor ファイル内のすべてのステートメントは正常に機能します。