这是控制器内的操作[HttpGet][Route("show_many")][ArrayInput("ids", Separator = ',')]public async Task<HttpResponseMessage> GetByIds(int[] ids){}执行似乎未到达 ArrayInput 或 GetByIds 方法。我相信 int 数组作为参数导致了这个问题。当我执行基本的邮递员请求时,一切正常。我通过 HttpClient 从 SDK 调用此端点。我还尝试在客户端标头中设置内容类型,例如client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));但这也没有帮助。Uri 看起来像http://example.com/show_many?ids=1,2,3这里有什么问题?更新我注意到这个错误发生在 Microsofot.AspNet.WebApi 5.2.7 中,但没有发生在 5.2.3 中。此外,我注意到 client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 仅创建 Accept 标头,而不创建 Content-Type。Content-type 应该是响应标头,但不幸的是,仅将 content-type 添加到请求标头实际上绕过了此问题(在邮递员中)。
3 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
我正在使用 .Net 3.1,并且遇到了同样的问题。
解决办法是这样的
[HttpGet("foo")]
public IActionResult GetFoos([FromQuery] FooType[] fooTypes)
{
return Ok(Foo.One);
}
和queryString是api/myControler/foo?fooType=A&fooType=B;
希望这可以帮助!
繁星coding
TA贡献1797条经验 获得超4个赞
也许您的 Accept 标头与 415 无关。请确保您正确地形成了 url。
您也可以将 [FromUri] 指定为参数,并像 一样构建您的 uri api?ids[]=1&ids[]=2
。
- 3 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消