似乎 Cassette 和 Microsoft.AspNet.Web.Optimization(默认包含在 MVC4 项目中的捆绑解决方案)都不依赖于 ASP.NET MVC。因此,任何一种解决方案都可以与 ServiceStack 的 AppHost 实现一起使用。
对于卡带:
如果从 NuGet 安装,一切正常:
ServiceStack.Host.AspNet
ServiceStack.Razor
盒式磁带
...然后像往常一样使用 Razor 'cshtml' 文件中的 Cassette。
一个小问题确实让我挠了几分钟:
在 web.config 中列出 HttpHandler 的顺序很重要。该包添加了一个使用通配符的 HttpHandler 路径,这意味着永远不会到达ServiceStack.Host.AspNet
任何进一步的 HttpHandler,例如 for 。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.Optimization
完成此操作后,您可以正常使用 Microsoft.AspNet.Web.Optimization 捆绑和缩小。
我添加了一个BundleConfig.cs
文件,遵循您在默认 MVC4 项目中找到的约定。BundleConfig.RegisterBundles(BundleTable.Bundles);
然后我从 ServiceStack AppHost 文件中调用。
此后,@Scripts.Render()
Razor 文件中的所有语句都可以正常工作。