c# - 使 web api 控制器读取内容而不是使用lazystreamcontent
问题描述
我在 Web API 控制器中有以下方法:
[HttpPost]
[Route("api/Logs")]
public async Task<IHttpActionResult> AddLogsAsync([FromBody] List<Log> logList)
{
if (logList.Count > 0)
{
using (var database = new DatabaseContextHandler())
{
await database.AddLogsAsync(logList);
}
}
return Ok();
}
它通常可以工作,直到我尝试向logList
它发送一个 6.7 MB JSON 并得到一个NullReferenceException
on (logList.Count > 0)
,这显然意味着logList
is null
。在确认我的 JSON 格式正确后,我重新发送了相同的 JSON,这次是在调试 API 时,看到它不仅logList
是null
,而且Request.Content
显示为LazyStreamContent
,我认为这是控制器如何处理较大的内容体。
我可以调用ReadAsStringAsync()
,然后在方法中对其进行反序列化,但这意味着我必须对每个控制器进行此更改,以避免以后在其他地方出现此问题。
所以我的问题是,有没有办法阻止控制器使用LazyStreamContent
?让它总是在进入方法之前完全读取请求?我尝试深入研究文档,但找不到任何似乎可以执行此类操作的配置。
解决方案
推荐阅读
- pseudocode - 如何实现模拟退火以找到图中的最长路径
- vim - 删除单词和前面的空格
- r - 矩阵行的符号变化
- mysql - 如何将此redshift查询转换为有关日期的MySQL
- javascript - 剃刀页面javascript只执行一次c#
- kubernetes - Prometheus/Grafana-如何为所有 pod 生成数据点?
- click - 我如何检测鼠标输入,单击。在印刷文本上?
- reactjs - Django 抛出 {"non_field_errors":["Invalid data. Expected a dictionary, but got tuple."]} React JS
- python - 无法同步 Djstripe 中已存在的计划
- ios - 使用AttributedString单击href时是否可以使UILable可单击