.NET 6 Web API - 请求正文中的错误"Content-Type"属性 - 返回 400 状态而不是 500



我在请求有效负载中有一个Attachmentsjson数组,每个附件有三个属性:

Name-字符串,保存要附加的文件的名称。

ContentType- System.Net.Mime.ContentType并保存文件的媒体类型信息和

FileData-字符串,保存base64编码的文件/附件的内容字符串。

每当ContentTypenull/empty时,我看到控件甚至没有击中控制器,但API正在发送500 internal server error,响应中的错误消息对客户端没有帮助:

Message: This property cannot be set to an empty string. (Parameter 'value')

是否有一种方法可以让API通过为该属性输入的任何值(ContentType中的mediaType),我想在API中对此属性进行验证,并抛出带有适当消息的400。下面是导致上述错误的请求正文:

"Attachments": [
{
"Name": "Something.txt",
"ContentType": {
"Boundary": null,
"CharSet": null,
"MediaType": "", //this is causing the above error and I would like this one to be a bad request not a internal server error.
"Name": "SampleContentType",
"Parameters": [
{
"Key": "name",
"Value": "SampleContentType"
}
]
},
"FileData": "some base64 encoded string here"
}
]

对此的一个解决方案是使用一个自定义的ContentType模型,它模仿正在使用的模型,做验证然后将其映射到原始模型,但我想了解为什么API在它甚至击中控制器之前抛出500。

使用ConsumesAttribute让框架检查。

[Consumes("multipart/form-data")] // example
public async Task<IActionResult> MyAction { ... }

如果不满足Consumes条件,默认将返回415。

相关内容

  • 没有找到相关文章

最新更新