问题描述:

POST/PUT to ASP.Net Core with [FromBody] to a MongoDB GeoJsonObjectModel member is always null

[HttpPost]
[ProducesResponseType((int)HttpStatusCode.OK)]
[ProducesResponseType((int)HttpStatusCode.BadRequest)]
public async Task<IActionResult> CreateOrUpdateProject([FromBody]Project project)
{ // project is null }

其中,Project类使用了GeoJson对象。

原因分析:

1 asp.net core根据MIME类型选择合适的序列化和反序列化器,例如application/json默认使用Json.Net库。

2 Project对象的GeoJson成员使用的MongoDB的GeoJson对象模型,导致asp.net core反序列化该对象时失败。

3 返回null。

解决方案:

1 取代asp.net core的默认反序列化方法,采用MongoDB的反序列化方法,代码如下:

//POST api/v1/[controller]/
[Route("")]
[HttpPost]
[ProducesResponseType((int)HttpStatusCode.OK)]
[ProducesResponseType((int)HttpStatusCode.BadRequest)]
public async Task<IActionResult> CreateOrUpdateProject()
{
//[FromBody]MonitorProject project
Project project = null;
using (StreamReader reader = new StreamReader(HttpContext.Request.Body, Encoding.UTF8))
{
project = BsonSerializer.Deserialize<Project>(reader.ReadToEnd());
}
var result = await _projectService.AddOrUpdateProject("", project); return result ?
(IActionResult)Ok() :
(IActionResult)BadRequest();
}

最新文章

  1. Leetcode: Range Sum Query 2D - Mutable &amp;&amp; Summary: Binary Indexed Tree
  2. Perl模块的安装方法
  3. DSS 搭建手机流媒体服务器
  4. 【JavaScript】一些注意点
  5. Android聊天界面刷新消息
  6. java数字保留两位小数四舍五入
  7. 分支-03. 三天打鱼两天晒网-B3
  8. &lt;a&gt;元素生成多个&lt;a&gt;的问题,元素标签结尾影响
  9. 菜鸟nginx源代码剖析数据结构篇(一)动态数组ngx_array_t
  10. Qt 解压/压缩文件
  11. 火眼发布Windows攻击工具集
  12. C# - 引用类型
  13. Mad Libs游戏 &amp; 华氏温度与摄氏温度转换
  14. HandlerThread分析
  15. 1.Junit test使用
  16. 【10】Quartz.net 定时服务实例
  17. 大图片上传(ImageIO,注意有的图片不能上传时因为他是tiff格式)
  18. System.Object 基类
  19. Nodejs + TypeScript
  20. 使用NIO快速复制Java文件

热门文章

  1. STL - priority_queue(优先队列)
  2. CentOS 7.1上安装.Net Core
  3. 【luogu P2002 消息扩散】 题解
  4. deep learning学习记录三
  5. Python学习之路——基础2(含深浅拷贝)
  6. 协议类接口 - UART
  7. RabbitMQ消息中间件极速入门与实战
  8. TCP三次挥手四次握手
  9. ABAP术语-APO (Advanced Planner and Optimizer)
  10. springboot中有用的几个有用aware以及bean操作和数据源操作