有ServiceStack默认路由转到MVC3控制器

问题描述:

我已经安装ServiceStack.Host.MVC到一个现有的MVC3项目,有很多控制器。有ServiceStack默认路由转到MVC3控制器

它现在路由到default.htm。我发现另一个*问题说要更改默认重定向路径,请执行以下操作。

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

但我真的想改变它来执行默认的Controller和Action作为global.ascx中的设置。我已经编辑DefaultRedirectPath指向/主页,它似乎工作正常,并没有添加主页到我的网址或任何东西,但我不是100%的应用程序在我的应用程序之间的关系。

如果改变这不是正确的做法,那么开始将一些Service Stack AppHost与常规MVC应用程序集成的最佳方式是什么?我将把我的基本控制器移动到ServiceStackController,并慢慢开始使用新的会话和用户管理内容。最终,我想要使用授权或共享sessionId与一些服务,但我会在稍后谈到。

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

ServiceStack BootstrapAPI应用程序将CatchAllController设置为MVC应用程序的HomeController。这对我有效。

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

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

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

您可能不需要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