ServiceStack:更改自托管应用程序中所有路由的基本路径

时间:2014-05-12 12:57:28

标签: servicestack servicestack-bsd

我有一个自托管应用程序,其中设置了许多路由。我想知道在启动应用程序时是否可以使用/api/<route>为每条路由添加前缀,而不是遍历每个路由并将路由更改为<route>,其中/api是现有路由?我知道它可以在IIS托管的环境中设置web.config,但我不确定它是否可以在自托管环境中使用?

2 个答案:

答案 0 :(得分: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/");

希望有所帮助。

答案 1 :(得分: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,但它无法提供其剃刀页面。所以这不太正确。仍然,现在留下答案,直到找到完整的解决方案。