我正在尝试将现有的 wcf rest api 转换为 ServiceStack,并且一开始就遇到问题:
[Route("foo/{userId}","POST")]
public class MyInputModel : IReturnVoid
{
public string userId { get; set; }
public SomeOtherObject properties { get; set; }
}
这里的目的是我将在 url 中提供 userId,并在帖子正文中提供 SomeOtherObject 的实例。我得到的错误是
<Message>Could not deserialize 'application/xml' request using MyInputModel'
Error: System.Runtime.Serialization.SerializationException:
Error in line 1 position 42. Expecting element 'MyInputModel'
from namespace 'blahblahblah'.. Encountered 'Element' with name
'SomeOtherObject', namespace 'http://blahblahblah'.
我唯一能想到的就是将我的 xml 包装在 aMyInputModel
中以使序列化程序满意。这并不是向后兼容的真正选择。
我也可以修改SomeOtherObject
为顶级输入模型,并在其中放置一个UserId
属性,但这也感觉不是最理想的,因为它是整个 api 中使用的对象,并且实际上与用户 ID 无关。它也已经独立发布,因此在那里进行更改会很痛苦。
有什么方法可以表明发布数据的根元素将是 a 的SomeOtherObject
instedMyInputModel
吗?在 WebApi 中,这将是[FromBody]
属性和诸如此类的东西。servicestack有类似的东西吗?