2014-09-26 42 views
1

我正在尝试使用github ServiceStack.UseCases/ImageResizer项目,并使其自行托管。我认为这很容易,所以我引用了这个:https://github.com/ServiceStack/ServiceStack/wiki/Self-hosting但是AppSelfHostBase在项目中未定义。然后,我尝试AppHostHttpListenerBase并让我的地方,我至少可以希望建立我自己的主机了这一点:ServiceStack.UseCases自行托管失败

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/"); 
    } 
} 

我再转移项目到我的CentOS框单。在monodevelop中,我能够构建和运行,但在运行时失败。看起来它仍然认为它是一个Mvc或Asp.Net项目。

除了这个尝试,我有一个工作的自己托管的ServiceStack项目在那里运行,但它不是这个ImageResizer,所有试图让我现有的项目包括新项目也失败了。

我也尝试将自己托管的项目的一部分代码包含到新的代码中,但符号未定义。基本符号,如“ServiceStackHost”。如果我开始尝试使用Nuget并执行更多的“Install-Package”,我可以解决这个符号问题,但是之后只会导致其他已解决的符号不再起作用。我并不完全了解Nuget。任何想法,前进的方式将不胜感激。

回答

1

ServiceStackHostAppSelfHostBase是在ServiceStack v4中添加的新类。

您可以使用AppHostHttpListenerBase这是ServiceStack v3中的自托管类。你看v4文档,这里有docs for ServiceStack v3这对于Self-Hosting是:

https://github.com/ServiceStackV3/ServiceStackV3/wiki/Self-hosting

自托管应用程序是在控制台应用程序通常地方产生,为您的例子试图运行一个在ASP.NET Web应用程序内的自托管应用程序。如果要在ASP.NET应用程序中运行ServiceStack,则应继承AppHostBase,否则,如果要运行自托管应用程序,请创建一个新的控制台应用程序并继承AppHostHttpListenerBase

+0

混淆的部分是从Nuget下载什么版本的项目与Github中的什么版本。我克隆了Github中ServiceStack.UseCases/ImageResizer的内容,并且我没有做任何修改。我想我的错误是认为最新的ServiceStack.UseCases是更高版本。因此,如果我发现ServiceStack 4.0或更高版本的文档,我不能期望它甚至可以与使用ServiceStack构建的项目的新Github下载一起工作。 - 这就是它真正的结果。 Github有各种各样的版本,并不总是最新的.Thx。 – tradetree 2014-09-26 13:47:38

+0

@tradetree所有[ServiceStack Apps](https://github.com/ServiceStackApps)和[Live Demos](https://github.com/ServiceStackApps/LiveDemos)已升级到v4。您可以在v3分支中找到一些[v3示例](https://github.com/ServiceStackV3/ServiceStackV3/blob/master/README.md#source-code-for-v3)。 – mythz 2014-09-26 14:10:40