【发布时间】:2017-06-25 06:31:18
【问题描述】:
我已经阅读了一些关于 SO 的问题,但解决方案都是针对 ASP.NET webApi 而不是 dotnet core。
我在 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>
这是我的模型类:
[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; }
}
当我向这条路由发送 post 请求(带有标题“application/xml”)时,它总是给我 MessageModel msg 的 null
我在这里错过了什么?
我知道有一个 DataContract 的东西,但我无法控制 xml 格式发送 到我的服务器,所以我需要一种方法将上述格式的 xml 绑定到我的对象。
我们将不胜感激任何帮助或导致任何文档。
【问题讨论】:
-
您遇到异常了吗?在代码中添加 try/catch。 CreateTime 将给出一个例外。我怀疑这可能是问题的原因。日期不是标准的日期时间格式,因此您需要为该类添加一个 get/put 属性,以便正确解析日期时间。
-
试试
[XmlRoot("MessageModel")] -
@jdweng 我只在访问 null 'msg' 对象时遇到异常,我只是尝试将 CreateTime 类型更改为字符串,因此日期时间解析不应影响绑定。但不幸的是,它仍然给我空的味精......
-
@CodingYoshi 抱歉,我刚试过...仍然为空
-
@jdweng 你真棒,你刚才给我的想法帮我解决了问题,确实是解析元素值和存储到字段的问题。在我将模型类中的每个字段都更改为字符串后,msg 对象开始出现。请务必为这个问题写一个答案,你值得享有声誉!
标签: c# xml asp.net-mvc asp.net-core-mvc .net-core