我已将ServiceStack.Host.MVC
安装到具有大量控制器的现有MVC3项目中。
现在路由到default.htm。我找到了另一个说更改默认重定向路径的StackOverFlow问题,请执行以下操作。
SetConfig(new EndpointHostConfig {DefaultRedirectPath = "/Foo" });
但我真的想要改变它以在global.ascx中执行默认的Controller和Action设置。我已将DefaultRedirectPath编辑为指向 / Home ,它似乎工作正常,并且不会将Home添加到我的网址或任何内容,但我不是100在我的应用程序中使用AppHost之间的关系%。
如果更改这个不是正确的事情,那么开始将一些Service Stack AppHost与常规MVC应用程序集成的最佳方法是什么。我要将我的基本控制器移动到ServiceStackController
,然后慢慢开始使用新的会话和用户管理。最终,我将要使用授权或共享sessionId与某些服务,但我稍后会谈到。
首先,我的目标是开始使用Funq的一些IOC功能。
答案 0 :(得分:2)
您可能不需要DefaultRedirectPath,因为它只是重定向到预定义的URL。使用旧URL时,需要使用MVC控制器,并为ServiceStack创建新的URL区域。为此,start by setting ServiceStackHandlerFactoryPath
。它应该允许您在子URL中托管ServiceStack,并且它不会干扰您现有的控制器,除非路径中存在冲突:
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>
答案 1 :(得分:1)
ServiceStack BootstrapAPI应用程序将CatchAllController设置为MVC应用程序的HomeController。这对我有用。
在AppHost :: Configure中,我输入以下代码:
public override void Configure(Funq.Container container)
{
// Other Configuration constructs here
ServiceStackController.CatchAllController = reqCtx => container.TryResolve<HomeController>();
}