Создайте маршрут для корневого пути, '/', с ServiceStack
Я пытаюсь установить RestPath для root, '/', но это не позволяет мне. Его высказывание RestPath '/' on Type 'MainTasks' is not Valid
Есть ли способ разрешить это? Я хотел бы предоставить ресурс из корня.
[Route("/", "GET")]
public class MainTasks : IReturn<MainTasksResponse>
{
}
Ответы
Ответ 1
Вы можете сопоставлять только маршрут /
в ServiceStack с FallbackRoute, например:
[FallbackRoute("/{Path*}")]
public class Fallback
{
public string Path { get; set; }
}
Это использует подстановочный знак для обработки каждого непревзойденного маршрута (вкл./foo/bar). Разрешен только 1 резервный маршрут.
Существует также несколько других способов обработки корневого пути по умолчанию /:
- Измените
EndpointHostConfig.DefaultRedirectPath
на перенаправление на службу, которую вы хотите использовать
- Добавить
default.cshtml
Razor или Markdown View или статический default.htm
(для запросов HTML)
- Зарегистрировать a
EndpointHostConfig.RawHttpHandlers
- это первый обработчик, просмотренный в Order of Operations Order.
- Зарегистрировать a
IAppHost.CatchAllHandlers
- Это вызвано для несогласованных запросов.
- Обработать запрос в Глобальный фильтр запросов
Ответ 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);
Ответ 3
Я пытался это сделать и нашел метод Кристофера Дэвиса больше не работать в последнем стеке службы для самостоятельной службы. Ниже приведено мое обслуживание, которое не выполняет никаких параметров.
[FallbackRoute ( "/" )]