问题:调用 ASP.Net Core WebAPI的HTTP POST方法时,从 [FromBody] 中读取的 MongoDB GeoJsonObjectModel成员总是null
2024-09-04 15:02:29
问题描述:
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();
}
最新文章
- Leetcode: Range Sum Query 2D - Mutable &;&; Summary: Binary Indexed Tree
- Perl模块的安装方法
- DSS 搭建手机流媒体服务器
- 【JavaScript】一些注意点
- Android聊天界面刷新消息
- java数字保留两位小数四舍五入
- 分支-03. 三天打鱼两天晒网-B3
- <;a>;元素生成多个<;a>;的问题,元素标签结尾影响
- 菜鸟nginx源代码剖析数据结构篇(一)动态数组ngx_array_t
- Qt 解压/压缩文件
- 火眼发布Windows攻击工具集
- C# - 引用类型
- Mad Libs游戏 &; 华氏温度与摄氏温度转换
- HandlerThread分析
- 1.Junit test使用
- 【10】Quartz.net 定时服务实例
- 大图片上传(ImageIO,注意有的图片不能上传时因为他是tiff格式)
- System.Object 基类
- Nodejs + TypeScript
- 使用NIO快速复制Java文件