【发布时间】:2013-02-20 18:16:35
【问题描述】:
我正在尝试将现有的 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 包装在 MyInputModel 中以使序列化程序满意。这并不是向后兼容的真正选择。
我还可以将SomeOtherObject 修改为顶级输入模型,并在其中放置一个UserId 属性,但这也感觉不是最理想的,因为它是整个api 中使用的对象,并且实际上并没有绑定到用户身份。它也已经独立发布,因此在那里进行更改会很痛苦。
有没有办法表明发布数据的根元素将是 SomeOtherObject 插入 MyInputModel?在 WebApi 中,这将带有 [FromBody] 属性等等。 servicestack有类似的吗?
【问题讨论】:
标签: rest routing servicestack