是否有办法以编程方式获取使用Servicestack框架构建的网站的元数据?我们正在寻找一个可以在两个不同环境中托管的Servicestack网站的应用程序,并找出它们之间是否存在差异。以下是我们希望通过编程从应用程序的Servicestack网站读取的元数据详细信息:
答案 0 :(得分:1)
是的,您可以从AppHost的Metadata
属性中访问大多数ServiceStack的元数据,该属性返回ServiceMetadata类。在AppHost之外时,您可以从HostContext.Metadata
单例访问它。
可以从OperationsMap中访问很多信息,例如:
var allServices = HostContext.Metadata.OperationsMap.Values.ToList();
这将返回一个List<Operation>
,其中包含有关服务的大多数元数据,例如:
Routes
属性中获得每个操作的路线RequestType
和ResponseType
返回请求DTO类型和已知的响应DTO类型所有请求DTO都是DTO /复杂类型。访问有关每种类型的信息的方法是使用C#反射方法。您可以使用Type.GetSerializableProperties()
扩展方法来获取PropertyInfo[]
的可序列化Type
。
请注意,您还可以使用Metadata Debug Template实时查询大量此类元数据,该ServiceStack Templates在注册TemplatePagesFeature
插件时启用:
Plugins.Add(new TemplatePagesFeature {
EnableDebugTemplate = true, // viewable by Admin users
//EnableDebugTemplateToAll = true // viewable by all users
})
您可以在其中使用实时查询服务的ServiceStack元数据:
{{3}}