我已经在SO上阅读了几个问题,但解决方案都是针对ASP.NET webApi而非dotnet核心。
我在Startup.cs中添加了xml支持
services
.AddMvc()
.AddXmlSerializerFormatters();
这是我的控制器方法:
[Route("main")]
[HttpPost]
public string MainPost([FromBody]MessageModel msg)
{
_log.LogInformation("body msg ="+msg.Content);
return "test";
}
这是我的XML
<xml>
<ToUserName>toUser</ToUserName>
<FromUserName>FromUser</FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType>text</MsgType>
<Content>test content</Content>
<MsgId>1234567890123456</MsgId>
</xml>
这是我的Model类:
[XmlRoot("xml")]
public class MessageModel
{
public string ToUserName { get; set; }
public string FromUserName { get; set; }
public DateTime CreateTime { get; set; }
public string MessageType { get; set; }
public string Content { get; set; }
public int MsgId { get; set; }
}
当我向此路线发送帖子请求(带标题&#34; application / xml&#34;)时,它总是为MessageModel msg
我在这里缺少什么?
我知道有一个DataContract的东西,但我不能控制xml格式发送 到我的服务器所以我需要一种方法将xml以上述格式绑定到我的对象。
非常感谢任何帮助或指导任何文件。
答案 0 :(得分:1)
我发现这个问题归功于@jdweng的评论,这让我对可能出现的问题有所了解。
问题是XML中有一些元素无法序列化到我的模型类中的指定类型。他们是DateTime CreateTime
和int MsgId
。
所以将所有字段更改为字符串解决问题。
我不知道为什么不是dotnet核心告诉我们这个而不是仅仅因为这种原因导致绑定失败而给我们null,这绝对是他们可以改进的东西。