c#-调用ASP.NET Core Web API时“ 400 /输入无效”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-调用ASP.NET Core Web API时“ 400 /输入无效”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2635字,纯文字阅读大概需要4分钟。
内容图文
![c#-调用ASP.NET Core Web API时“ 400 /输入无效”](/upload/InfoBanner/zyjiaocheng/686/22d788abc97a4c0dab81c928e40c6db4.jpg)
我正在使用邮递员测试我的Web API,并在邮递员中返回“ 400错误请求”或“输入无效”.我动作第一行的断点没有被击中.我如何弄清楚幕后发生了什么?
我将显示Postman的屏幕截图,但无法上传图片.这只是一个POST,其中为Body指定了多个字段.这是网址:
http://localhost:52126/api/v1/itinerary
这是动作:
[HttpPost]
[Route("api/v1/itinerary")]
public async Task<ActionResult> AddItineraryAsync([FromBody] Itinerary itinerary)
{
if (!ModelState.IsValid) // Break point on this line not getting hit!
{
return BadRequest(ModelState);
}
await Logic.AddItineraryAsync(itinerary);
return Ok();
}
最初,我没有为此操作指定[FromBody].无论哪种方式都行不通.我可以检查什么,以了解发生了什么事?
澄清(回应克里斯·普拉特):
我正处于编写第一个移动应用程序的初期阶段,作为一个自下而上的家伙,我首先开始使用一些Web API调用.我假设我将JSON从移动应用程序传递到此服务器层.
在此Web API项目中,我没有做任何与防伪令牌有关的事情,因此我认为这些令牌没有作用……除非那是Postman所提供的.
从操作中删除该参数确实会使执行下降到我的断点,因此错误似乎与ASP.NET的绑定尝试有关.
在Postman中进行了一些深入研究之后,我确实看到标题为Content-Type指定了x-www-form-urlencoded.根据您的建议,我将其更改为application / json.但是,这似乎没有什么不同.
更多信息:
在尝试了下面卡尔的建议之后,我获得了更多信息.执行权落到了行动中,我看看邮递员正在传递什么.这里是:
----------------------------179455694862693501539465
Content-Disposition: form-data; name="StartPoint"
Tacoma
----------------------------179455694862693501539465
Content-Disposition: form-data; name="EndPoint"
Portland
----------------------------179455694862693501539465
Content-Disposition: form-data; name="TravelDate"
2018-8-21 07:00:00 AM
----------------------------179455694862693501539465
Content-Disposition: form-data; name="Name"
Test Itinerary
----------------------------179455694862693501539465
Content-Disposition: form-data; name="UserAccountId"
2
----------------------------179455694862693501539465
Content-Disposition: form-data; name="Comment"
Just doin' some testing.
----------------------------179455694862693501539465--
Json反序列化因以下原因而失败:
JsonReaderException: Input string '----------------------------179455694862693501539465' is not a valid number.
这些数字是什么,它们来自哪里?
解决方法:
仅当ModelState能够成功反序列化发布正文/绑定时,才会验证ModelState.
您的问题并不明确,但是听起来好像您是以x-www-form-urlencoded的形式发布的.在这种情况下,您不应该具有[FromBody].但是,请记住,这是一种“或”的情况,因此,如果您最终希望通过JSON发布,则应保留该属性,然后从Postman发布JSON.
除此之外,请确保您没有使用防伪令牌验证,或者要与请求一起发布有效令牌.反伪造验证失败将使请求短路并立即返回400.
如果要发布JSON,请确保JSON有效.如果JSON无效,您将立即得到400.
内容总结
以上是互联网集市为您收集整理的c#-调用ASP.NET Core Web API时“ 400 /输入无效”全部内容,希望文章能够帮你解决c#-调用ASP.NET Core Web API时“ 400 /输入无效”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。