创建根路径的路线,“/”,与ServiceStack(Create route for root p

2019-07-04 00:12发布

我想为root设置一个RestPath,“/”,但它不是让我来。 它说RestPath '/' on Type 'MainTasks' is not Valid

有没有办法允许这样做? 我想提供从根的资源。

[Route("/", "GET")]
public class MainTasks : IReturn<MainTasksResponse>
{
}

Answer 1:

你只能匹配的路由/路径中ServiceStack与FallbackRoute ,例如:

[FallbackRoute("/{Path*}")]
public class Fallback
{
    public string Path { get; set; }
}

这将使用通配符来处理每一个无与伦比的路线(INC。/富/条)。 只有1个备用路径是允许的。

也有一些其他的方式来处理默认的根路径/:

  1. 更改EndpointHostConfig.DefaultRedirectPath重定向到您希望使用的服务
  2. 添加default.cshtml剃刀或降价查看或静态default.htm (对于HTML请求)
  3. 注册一个EndpointHostConfig.RawHttpHandlers -这是第一个处理程序看着ServiceStack的操作顺序 。
  4. 注册一个IAppHost.CatchAllHandlers -这被呼吁联合国匹配的请求。
  5. 在处理一个请求全局请求筛选


Answer 2:

这为我工作。 我刚添加的RawHttpHandler并改写了请求路径。 工作就像一个冠军。 (这是我APPHOST的配置功能的发现。)

var conf = new EndpointHostConfig();
{
    DefaultRedirectPath = "/foo",
    AllowFileExtensions = { { "eot" }, { "svg" }, { "ttf" }, { "woff" } },
};

conf.RawHttpHandlers.Add(r =>
{
    if (r.RawUrl == "/")
    {
        HttpContext.Current.RewritePath(conf.DefaultRedirectPath);
    }

    return null;
});

this.SetConfig(conf);


Answer 3:

我一直在努力做到这一点,发现克里斯托弗·戴维斯方法在自托管服务的最新服务栈不再起作用。 不带任何参数对我的服务提出了以下工作。

[FallbackRoute( “/”)]



文章来源: Create route for root path, '/', with ServiceStack