如果你使用 aCustomAuthUserSession
并且有
JsConfig.Init(new Config {
ExcludeTypeInfo = true
});
解决方案是为需要它的类型启用它,在这种情况下:
JsConfig<CustomAuthUserSession>.IncludeTypeInfo = true;
发生这种情况是因为 ServiceStack 允许您使用并保留您自己的自定义 UserSession,它需要将__type信息与有效负载一起保留,以了解将其脱水为哪种具体类型。
支持任意响应
这是相当罕见的,因为我们只需要在 DTO 可以支持持有任意类型时才这样做,基本上是在使用对象、接口或抽象属性时(即我们无法从类定义中推断类型)。ServiceStack 中唯一存在的其他地方是 MQMessage<T>
类型,它允许持久化任意主体。
使用松散类型的数据结构而不是匿名类型
默认情况下,ServiceStack 仅在需要时添加添加的__type信息,但理想情况下,您不应该在服务响应中使用匿名类型,这需要偏离默认配置和ServiceStack 鼓励的“成功坑”开发。
使用松散类型的数据结构,例如Dictionary
或List
首选非结构化数据作为匿名类型,基本上可以防止您的 DTO 被反序列化,并阻止客户了解服务最终返回的内容 - 这将破坏任何依赖于您的服务的东西静态可推断,例如 XSD/WSDL/SOAP。