我正在尝试使用github ServiceStack.UseCases / ImageResizer项目,并使其自托管。我认为这很容易,所以我引用了这个:https://github.com/ServiceStack/ServiceStack/wiki/Self-hosting但AppSelfHostBase在项目中是未定义的。然后我尝试了AppHostHttpListenerBase,这让我至少可以设置自己的主持人:
public class AppHost : AppHostHttpListenerBase
{
public AppHost() : base("Image Resizer", typeof(AppHost).Assembly) {}
public override void Configure(Container container) {}
}
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
AppHost appHost = new AppHost();
appHost.Init();
appHost.Start("http://*:1301/");
}
}
然后我将项目转移到带有mono的CentOS盒子。在monodevelop中,我能够构建和运行,但它在运行时失败了。它似乎仍然认为它是一个Mvc或Asp.Net项目。
除了这次尝试之外,我还有一个正在运行的自托管ServiceStack项目,但不是这个ImageResizer,所有试图让现有项目包含新项目的尝试都失败了。
我还尝试将作为工作自托管项目一部分的代码包含在新代码中,但后来符号未定义。像“ServiceStackHost”这样的基本符号。如果我开始尝试使用Nuget并执行更多“Install-Package”,我可以解决此符号问题,但只是导致以前解析的其他符号不再起作用。我真的不完全了解Nuget。任何有关前进方向的想法都将受到赞赏。
答案 0 :(得分:1)
ServiceStackHost
和AppSelfHostBase
是 ServiceStack v4 中添加的新类。
您可以在 ServiceStack v3 中使用AppHostHttpListenerBase
这是一个自托管类。您正在查看v4
文档,以下是docs for ServiceStack v3所在的Self-Hosting:
https://github.com/ServiceStackV3/ServiceStackV3/wiki/Self-hosting
自托管应用通常是在控制台应用中创建的 - 您的示例是尝试在 ASP.NET Web应用中运行自托管应用。如果要在ASP.NET应用程序中运行ServiceStack,则应继承AppHostBase
,否则,如果要运行自托管应用程序,请创建新的控制台应用程序并继承自AppHostHttpListenerBase
1}}。