2013-02-15 66 views
1

我已經安裝ServiceStack.Host.MVC到一個現有的MVC3項目,有很多控制器。有ServiceStack默認路由轉到MVC3控制器

它現在路由到default.htm。我發現另一個StackOverFlow問題說要更改默認重定向路徑,請執行以下操作。

SetConfig(new EndpointHostConfig {DefaultRedirectPath = "/Foo" }); 

但我真的想改變它來執行默認的Controller和Action作爲global.ascx中的設置。我已經編輯DefaultRedirectPath指向/主頁,它似乎工作正常,並沒有添加主頁到我的網址或任何東西,但我不是100%的應用程序在我的應用程序之間的關係。

如果改變這不是正確的做法,那麼開始將一些Service Stack AppHost與常規MVC應用程序集成的最佳方式是什麼?我將把我的基本控制器移動到ServiceStackController,並慢慢開始使用新的會話和用戶管理內容。最終,我想要使用授權或共享sessionId與一些服務,但我會在稍後談到。

首先,我的目標是開始使用Funq的一些IOC功能。

回答

1

ServiceStack BootstrapAPI應用程序將CatchAllController設置爲MVC應用程序的HomeController。這對我有效。

在APPHOST ::配置,我把下面的代碼:

public override void Configure(Funq.Container container) 
{ 
    // Other Configuration constructs here 

    ServiceStackController.CatchAllController = reqCtx => container.TryResolve<HomeController>(); 
} 
2

您可能不需要DefaultRedirectPath,因爲它只是一個重定向到預定義的URL。你需要讓你的MVC控制器在使用你的舊URL的時候點擊,併爲ServiceStack創建一個新的URL區域。爲此,start by setting ServiceStackHandlerFactoryPath。它應該讓你主持ServiceStack在子URL,它不會與現有的控制器干涉,除非有路徑衝突:

SetConfig(new EndpointHostConfig { ServiceStackHandlerFactoryPath = "api" }); 

在web.config中ServiceStack HTTP處理程序將需要以匹配:

<location path="api"> 
<!-- Required for IIS 7.0 --> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <handlers> 
     <add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" /> 
    </handlers> 
    </system.webServer> 
</location> 
+0

的NuGet包這樣做,我默認。 Service Stack服務的東西掛在/ api之外。但是,在我的常規MVC應用程序加載之前,AppHost仍然在做一些東西......而這正是我想要更好地理解的東西。 – taudep 2013-02-15 17:46:13

+0

它做什麼「東西」?你確切的問題是什麼? – driis 2013-02-15 17:47:52

+0

AppHost正在加載並重定向到default.htm,我通過設置DefaultRedirectPath =「/ Home」來更改它。我將重新編輯我的問題,但我只想驗證在我的global.aspx代碼之前運行的AppHost是否是正確的順序,並且以適當的方式設置默認的redirectPath以啓動與現有MVC站點代碼的集成。我花了很多時間用SocialBootstrapApi嘗試並理解這一切。即使我將SS處理程序掛在/ api之外,我仍然希望能夠將AppHost的東西集成到我的常規應用程序中。 – taudep 2013-02-15 17:55:32