我有一个带有以下方法的asp.net核心MVC控制器
[HttpPost("MyMethod")]
public async Task<IActionResult> TestMethod([FromBody] string[] IDs)
{
// ...
}
我正在尝试通过带有正文的POST请求调用此方法:
{"IDs":["Test1", "Test2"]}
但是,调用该方法时,ID为null。在我的日志中,我看到一个条目“Microsoft.AspNetCore.Mvc.Formatters.JsonInputFormatter - JSON输入格式化程序引发异常。”,我认为这与此有关。
我在这里做错了什么? 我是否需要以某种方式修改我的C#方法的签名才能正确解析请求的正文?或者请求的正文需要看起来不同才能被服务器读取?
__
编辑:C#中的完整JSON异常似乎是:
无法将当前JSON对象(例如{“name”:“value”})反序列化为类型'System.String []',因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化
要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,使其成为普通的.NET类型(例如,不是像整数这样的基本类型,而不是可以从JSON对象反序列化的集合类型,如数组或List)。 JsonObjectAttribute也可以添加到类型中以强制它从JSON对象反序列化。
路径'ID',第1行,第9位。
可能与此问题无关,但我通过VBA-Tools for Excel提交POST请求:
Dim Client As New WebClient
Client.BaseUrl = ' ... url to the request
Dim Request As New WebRequest
Request.Method = WebMethod.HttpPost
Request.RequestFormat = JSON
Call Request.AddBodyParameter("IDs", someStringArray)
Dim response As WebResponse
Client.TimeoutMs = 120000
Set response = Client.Execute(Request)