3

我正在学习 ServiceStack 如何在自托管项目的帮助下工作。自托管项目更容易调试和理解,因为 IIS 内部不会发生任何奇迹。

我按照这些步骤,阅读http://www.servicestack.net/mythz_blog/?p=785并将它们向后应用。

它适用于 Docs,但不适用于 SocialBootstrapApi。Global.asax 中的 Application_Start() 中的代码是我认为的问题

ServiceStack 文档的步骤

  • 下载 ServiceStack Docs 示例项目

  • 创建一个新的控制台项目(.Net 3.5,因为 Docs 仍然是 3.5)

  • 复制旧 Web 项目中除 web.config 之外的所有文件。(我第一次使用拖放,但只是移动了文件,并没有更新 .csproj 文件,所以我不得不使用编辑器来复制一些 ItemGroup 部分。)

  • 将 AppHost 移到单独的类文件中,改为从 AppHostHttpListenerBase 继承

  • 从 RazorRockstars 项目复制 Programs.cs 文件

  • 更改 baseUrl: var baseUrl = "http://localhost:2001/"; // ConfigUtils.GetAppSetting("WebHostUrl");

  • 从 RazorRockstars 项目复制 app.config 文件(但这不是必需的)

  • 将控制台项目的输出路径更改为 .\ 因为否则 PageManager.Init 的路径错误并且找不到大多数文件

  • 完成此操作后,下载完整的 ServiceStack 源代码并在 Debug 模式下重新编译,将 Docs 项目中的所有 ServiceStack 引用替换为新编译的内容。现在,您可以轻松单步执行所有 ServiceStack 代码、设置断点等,并了解发生了什么以及何时发生。控制台项目还有其他一些优点,它们启动速度更快,编辑并继续工作更频繁。

对于 SocialBootstrapApi,我做了同样的事情,除了/和

  • 将 web.config 重命名为 app.config

  • 注释掉 // [程序集:WebActivator.PreApplicationStartMethod(typeof(SocialBootstrapApi.AppHost), "Start")]

  • 现在,项目的正常 ServiceStack 部分可以正常工作,尽管 url 没有初始 /api/

  • 尝试将 Application_Start() 从 Global.asax 移动到 AppHost.Configure ==>> 拒绝启动

4

1 回答 1

2

ASP.NET MVC 不能托管在自托管的 HttpListener 中(因为它与 ASP.NET 耦合),但 ServiceStack 确实支持在自托管的 HttpListener 应用程序中托管它的 Razor 和 Markdown 视图引擎。

Razor Rockstars网站是 ServiceStack 的 Razor 和 Markdown 视图引擎支持的展示网站。razor-console.servicestack.net是托管在 HttpListener 自主机中的同一网站。RazorRockstars的源代码位于 GitHub 上RazorRockstars.SelfHost示例包含 razor-console 的源代码。对于自托管网站,您必须记住的一件事是 VS.NET 中的 Razor 视图页面Build Action需要设置为Copy if Newer,以便将视图复制到/bin目录中,以便 ServiceStack 在运行时找到它们。

于 2012-12-31T07:53:57.340 回答