2014-09-26 71 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