我正在学习 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 ==>> 拒绝启动