2014-05-12 103 views
1

我有一個自託管的應用程序,其中設置了許多路由。而不是通過每一個,並改變路線爲/api/<route>其中<route>是現有的路線,我想知道如果我可以在啓動應用程序時用/api前綴每個路線嗎?我知道它可能在IIS託管環境中設置爲web.config,但我不確定它是否可以在自託管環境中使用?ServiceStack:更改自託管應用程序中所有路由的基本路徑

回答

4

根據this ServiceStack article你只需要通過配置來設置它,像這樣:

public override void Configure(Container container) 
{ 
    SetConfig(new HostConfig { HandlerFactoryPath = "api" }); 
} 

再加上這answer from Mythz和你擁有屬於自己的自託管應用程序在/api/

_apphost.Start("http://localhost:1337/api/"); 

注意:這似乎適用於自託管的API,但它無法提供其剃刀頁面。所以這是不正確的。仍然,現在留下答案,直到找到完整的解決方案。

5

@ EliGassert的答案適用於ServiceStack v4自託管應用程序。這是更改ServiceStack v3自託管應用程序中所有路由的基本路徑的要求。

ServiceStack V3:

在你APPHOST Configure方法,你需要設置ServiceStackHanderFactoryPath到所需的前綴。

public override void Configure(Container container) 
{ 
    SetConfig(new EndpointHostConfig { 
     ServiceStackHandlerFactoryPath = "api" 
    }); 
} 

當你設置你的聽衆,你還必須附加前綴:

appHost.Start("http://*:9000/api/"); 

希望有所幫助。

+0

是的,我正在與Jabbr的@Eli Gassert談論此事。我試了一下,然後我的index.html頁面加載失敗,當我導航到/index.html或/api/index.html時返回了404,因此他做了一個筆記。 – CallumVass

+0

@BiffBaffBoff好的,一秒鐘,我想我也可以解決這個問題。我有一個傾向,那是什麼。讓我來做一個測試。 – Scott

+0

理想情況下,我願意服務於根目錄的靜態HTML,然後是/ api上的所有服務 – CallumVass