在类似于Auto Query documentation示例项目的项目中使用ServiceStack EmailContacts中的第一个示例(即ServiceModel和ServiceInterface的单独项目),如何注册自定义路由&#34 ; /电影"由Route属性定义?
[Route("/movies")]
public class FindMovies : QueryBase<Movie>
{
public string[] Ratings { get; set; }
}
通常,在实例化AppHostBase
时,可以通过传递ServiceInterface程序集来注册这些自定义路由:
public AppHost() : base("Email Contact Services", typeof(ContactsServices).Assembly) {}
但是,FindMovies
请求DTO没有关联服务,因此不会被包含在内。没有注册路线。
如果我通过typeof(FindMovies).Assembly
代替typeof(ContactsServices).Assembly
或者除了{{1}}之外,那么预定义的路线将被注册(即显示在元数据,邮递员等中),但自定义路线是仍然没有注册(即没有出现在元数据,邮递员等)。
当没有服务且ServiceModel和ServiceInterface位于不同的项目中时,使用属性注册自定义路由的最佳方法是什么?
答案 0 :(得分:1)
这些问题应该在v4.0.24 +现在available on MyGet解决。
有一个新的AutoQueryFeature.LoadFromAssemblies
属性,用于指定要扫描IQuery
请求DTO的其他程序集列表。这会自动查找定义了其他请求DTO的程序集,因此在大多数情况下无需执行任何操作,因为它可以自动查找您的查询服务。
查询DTO的路线现在应该出现在元数据页面以及Swagger和Postman元数据API上。