ServiceStack剃刀文件中单独的项目(ServiceStack Razor files in

2019-10-23 04:40发布

我有由ServiceStack后端的解决方案,与常规设置(APPHOST,serviceInterface等和ServiceModel),两者WinForms应用程序和iOS应用使用服务。

现在,我想提出一个网络管理员,并正在寻找咨询如何构建这个 。 我想保持APPHOST项目小,如SS文件说

理想情况下,根级APPHOST项目应保持轻量和自由实现的。

所以我想有网络管理员在一个单独的项目 ,所有的.cshtml和内容,这一切。

这可能吗? 不建议? 有任何想法吗?

我能想到的一些替代品

  • 单页的应用程序,让少数cshtml文件住在APPHOST项目。 这是值得学习曲线?
  • 有单独的项目调用Web服务。 那不是很无效的,考虑到他们生活在同一个Web服务器上? 还是应认为是有利的,因为它使一切松耦合?

Answer 1:

看看文档使用编译剃刀意见和ServiceStack.Gap如何创建使用编译剃刀查看嵌入式解决方案ServiceStack GitHub的仓库。



Answer 2:

我想为初学者提供一个更完整的答案:

  1. 为Web站点的项目,必须启用剃须刀。 它必须有一个参考ServiceStack.Razor例如,所以.cshtml将编译。

  2. 正如@mythz指出,加ServiceStack.Razor.BuildTask预编译剃刀文件。 这是必要的,让他们包括LoadFromAssemblies参数

  3. 在主APPHOST,指定剃刀文件到其他组件,可以找到LoadFromAssemblies例如:

      this.Plugins.Add(new RazorFormat { LoadFromAssemblies = { typeof(ActivityServer.Admin.AdminServices).Assembly } }); 
  4. 到目前为止,它一直都是关于剃刀.cshtml文件。 也包括更为复杂的观点的服务,例如,只需添加这到AppHost() : base(...)或者如果你想有一个前缀,这些服务使用AppHost.RegisterService。

有一点需要指出的是,有在外部DLL文件剃刀没有单独的命名空间,所以“hello.cshtml”在外部DLL与主APPHOST的同名文件冲突。 通过将(在外部DLL)中的所有文件CSHTML一个子文件夹下,这将帮助,因为该文件夹将是URL的一部分。



文章来源: ServiceStack Razor files in separate project