首页 > 编程语言 >关于ASP.NET.CORE中的Failed to read parameter "string param" from the request body as JSON的处理

关于ASP.NET.CORE中的Failed to read parameter "string param" from the request body as JSON的处理

时间:2023-06-19 12:55:09浏览次数:59  
标签:body CORE ASP string System param JSON Json

先上报错信息

Microsoft.AspNetCore.Http.BadHttpRequestException: Failed to read parameter "string param" from the request body as JSON.
 ---> System.Text.Json.JsonException: 's' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
 ---> System.Text.Json.JsonReaderException: 's' is an invalid start of a value. LineNumber: 0 | BytePositionInLine: 0.
   at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
   at System.Text.Json.Utf8JsonReader.ConsumeValue(Byte marker)
...

 

对应的Post请求信息(来自vs2022的.http文件发起的请求),请求的body为下图的string

可以通过该链接了解到 .http文件  使用 Visual Studio 2022 中的 .http 文件

###Not Correct Case 1
Post {{WebAppTest_FromBody_HostAddress}}/PostStringAtBody
Content-Type:application/json

string

 

终结点PostStringAtBody

app.MapPost("/PostStringAtBody", (HttpContext httpContext, [FromBody]string param) => 
{
    return param;
});

注:string param前序添加[FromBody]否则认为param来自QueryString。

具体解决方案

按照报错信息,以JSON格式读取body的参数时失败。传入的参数string并不是标准的JSON。给string加上双引号即可正确调用。

Post {{WebAppTest_FromBody_HostAddress}}/PostStringAtBody
Content-Type:application/json

"string"
-------------------------------------------------------------------------
响应时间: 64 ms
状态代码: OK (200)
Transfer-Encoding: chunked
Date: Wed, 14 Jun 2023 18:55:58 GMT
Server: Kestrel

Content-Type: text/plain; charset=utf-8
Content-Length: 6

------------------------------------------------
内容:
string

 

拓展

那么,如果入参本来就不是标准JSON或者body里的JSON有多种可能时(比如有时候是school,有时是student,还可能如本例的string),那么,你可能选择一下其中一种处理方式:

1)通过中间件Middleware或者ActionFilter形式提前对body进行一定的处理.

2)在请求到达Controller时再对Request.Body进行处理

 
[HttpPost]
public async Task<string> Test() { using (StreamReader sr = new StreamReader(this.HttpContext.Request.Body, leaveOpen: true)) { return await sr.ReadToEndAsync(); } }

 

 

 

标签:body,CORE,ASP,string,System,param,JSON,Json
From: https://www.cnblogs.com/mikodopants/p/17481792.html

相关文章

  • 官方core-ktx库能对富文本Span开发带来哪些便利?
    这是一个系列文章,专门研究Android官方提供的core-ktx库里面的扩展类、方法等等,看看能为项目开发带来哪些便利。已更新的文章列表如下:你需要了解的官方core-ktx库能对开发带来哪些便利1官方core-ktx库能对SparseArray系列、Pair开发带来哪些便利?接下来,本篇文章就带你看下富文本开发......
  • ASP.NET Core 6框架揭秘实例演示[39]:使用最简洁的代码实现登录、认证和注销
    认证是一个确定请求访问者真实身份的过程,与认证相关的还有其他两个基本操作——登录和注销。ASP.NETCore利用AuthenticationMiddleware中间件完成针对请求的认证,并提供了用于登录、注销以及“质询”的API,本篇文章利用它们使用最简单的代码实现这些功能。(本文提供的示例演示已经同......
  • .NET Core Web API 实现图形验证码
    https://blog.csdn.net/liwan09/article/details/126319320?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-126319320-blog-101289369.235%5Ev38%5Epc_relevant_sort_base2&depth_1-utm_......
  • 2023-06-18:给定一个长度为N的一维数组scores, 代表0~N-1号员工的初始得分, scores[i] =
    2023-06-18:给定一个长度为N的一维数组scores,代表0~N-1号员工的初始得分,scores[i]=a,表示i号员工一开始得分是a,给定一个长度为M的二维数组operations,operations[i]={a,b,c}。表示第i号操作为:如果a==1,表示将目前分数<b的所有员工,分数改成b,c这个值无用,如果a==2,表示将......
  • 第三十节:EFCore7.x版本新功能总结
    一.linq改进1.GroupBy(1).可以直接GroupBy进行toList()输出了. PS:从EFCore3.x--6.x不能直接groupby进行输出了。(2).这种类型的GroupBy不会直接转换为SQL,因此EFCore对返回的结果进行分组。但是,这不会导致从服务器传输任何其他数据。toList()才会查询。(3).案......
  • 关于ManyCore的一些讨论
    T-MCer说:BadNews:虽然我们认为采用nccNUMA来解决cachecoherence的问题,但目前还很难找到有相关研究认为未来的multicore应该取消cachecoherence的限制,doyouhaveanyinfo.?Ray说:我昨天看Tilera(100core)的产品说明,他们也保证cache一致性:Tilera'sDDC™(DynamicDistrib......
  • coredb 使用pg all-in-one 解决方案
    coredb认为可以使用pg干任何事情,自己基于rust开发了不少pg的扩展,当然也包含了不少社区现有的扩展同时coredb还开发了一个pg扩展仓库(实际上以前社区也有一个)说明目前coredb还在开发中,核心技术栈基于了rust,一些理念还是值得学习参考的参考资料https://docs.coredb.io/https://......
  • Corel PaintShop下载-Corel PaintShop(相片管理) 软件大全
    CorelPaintShopPro是一套经济实惠的相片编辑与图形设计软体,不受订阅限。利用专业的影像编辑工具提升相片效果,或使用全新的色盘、笔刷、渐层、花纹及材质创作效果独特的设计。我们简化了使用者介面以提升浏览速度,并针对您最常使用的工具进行改良,更提供了全新工作区以符合您的专业......
  • ASP.NET Core MVC 从入门到精通之Identity入门
    随着技术的发展,ASP.NETCoreMVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NETCoreMVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NETCoreMVC系统开发的人员。经过前几篇文章的讲解,初步了解ASP.NETCore......
  • ASP.NET MVC 性能优化和调试
    学习.NETCore应用程序的调试技术可以分为以下步骤:理解基础概念:首先,你需要理解什么是调试以及为什么我们需要调试。理解断点、单步执行、变量监视等基本调试概念。学习VisualStudioCode的调试功能:VisualStudioCode是一个流行的开发环境,它有强大的.NETCore调试支持。......