路由属性被忽略

时间:2013-05-02 22:38:41

标签: routing servicestack

根据multiple文档sources,可以将路由定义为DTO上的属性。我有以下DTO(最后一个是在不同的文件中):

[Route("/hdos", "GET")]
public class GetHdos
{
    public bool IncludeAdminUsers { get; set; }
}

[Route("/hdos/{Id}", "GET")]
public class GetHdo
{
    public Guid Id { get; set; }
}

[Route("/hdos/{HdoId}/facilities", "GET")]
public class GetHdoFacilities
{
    public Guid HdoId { get; set; }
}

由以下服务支持(最后一个服务位于不同的文件中):

public object Get(GetHdos request)
{
    return _hdos.GetAll(request.IncludeAdminUsers);
}

public object Get(GetHdo request)
{
    return _hdos.GetById(request.Id)
}

public object Get(GetHdoFacilities request)
{
    return _hdos.GetFacilities(request.HdoId);
}

致电任何

/hdos
/hdos/a82b955195e34bfda2fdde7da68f8992
/hdos/a82b955195e34bfda2fdde7da68f8992/facilities

返回Method not supported。但是,如果我将它们称为类名,则会触发路由。有什么我想念的吗?我是否需要以AppHost某种方式激活这些路线?

1 个答案:

答案 0 :(得分:2)

看起来ServiceStack以不同的方式为REST和HTTP类型映射您的路由。我在问题中没有提及我正在呼叫Json/syncreply/hdos因为我认为Json/syncreply是每个电话的一部分。我错了。如果这样做,它将查找DTO类名称作为路径。

要将在DTO上声明的路线用作属性,您只需拨打路线,不要使用json/syncreply。反过来没有在文档中直接说明,但我仍然感到困惑。