C# 将数组传递给.Net核心Web API方法时始终获得404
出于某种原因,我似乎无法将值数组传递给我的Web API方法。这是我的密码:C# 将数组传递给.Net核心Web API方法时始终获得404,c#,.net-core,asp.net-core-webapi,C#,.net Core,Asp.net Core Webapi,出于某种原因,我似乎无法将值数组传递给我的Web API方法。这是我的密码: [HttpGet("api/values/get/{ids}")] public JsonResult GetValues(string[] valueIds) { //Do something } 我已尝试通过以下URL调用此功能: 当我通过以下URL调用它时,我没有得到404,并且实际上调用了该方法,但是,该数组是空的: 我还尝试将属性[FromQuery]添加到方法签名中参数的前面,如
[HttpGet("api/values/get/{ids}")]
public JsonResult GetValues(string[] valueIds)
{
//Do something
}
我已尝试通过以下URL调用此功能:
public JsonResult GetValues([FromQuery]string[] valueIds)
我似乎无法让它工作,即使每个教程都说它应该。在这里扯掉我的头发。如果我错了,请纠正我,但我认为您需要使用[]-后缀命名查询参数。就像这样:
http://localhost:5001/api/values/get?valueIds[]=das&valueIds[]=ewq
否则,您可以很容易地检查您的API,除非使用UrlHelper。只需为自己生成一个url:
var url=url.Action(“GetValues”,new{valueIds=new[]{“das”,“ewq”})代码>如果我错了,请纠正我,但我认为您需要使用[]-后缀命名查询参数。就像这样:
http://localhost:5001/api/values/get?valueIds[]=das&valueIds[]=ewq
否则,您可以很容易地检查您的API,除非使用UrlHelper。只需为自己生成一个url:
var url=url.Action(“GetValues”,new{valueIds=new[]{“das”,“ewq”})
删除{ids}
前缀,因为操作选择器需要ids
参数,但您不在操作中传递它
[HttpGet("api/values/get")]
public JsonResult GetValues(string[] valueIds)
{
//Do something
}
并像这样应用请求
http://localhost:5001/api/values/get?valueIds=das&valueIds=ewq
删除{ids}
前缀,因为操作选择器需要ids
参数,但您没有在操作中传递它
[HttpGet("api/values/get")]
public JsonResult GetValues(string[] valueIds)
{
//Do something
}
并像这样应用请求
http://localhost:5001/api/values/get?valueIds=das&valueIds=ewq
那么,让我们来看看你所拥有的:
[HttpGet("api/values/get/{ids}")]
public JsonResult GetValues(string[] valueIds)
{
//Do something
}
我建议删除/get
,因为您的请求方法是HttpGet
中的get
您指定的路由意味着已通过的ids
(它只是一个变量,与get
相同,只能是单数),即:
您所展示的示例
get/?valueIds=das&valueIds=ewq
甚至没有指定{ids}
到目前为止,您的/get/{ids}
路径是冗余的
试一试
查询:
我建议大家在上读一读,让我们来看看你们的情况:
[HttpGet("api/values/get/{ids}")]
public JsonResult GetValues(string[] valueIds)
{
//Do something
}
我建议删除/get
,因为您的请求方法是HttpGet
中的get
您指定的路由意味着已通过的ids
(它只是一个变量,与get
相同,只能是单数),即:
您所展示的示例
get/?valueIds=das&valueIds=ewq
甚至没有指定{ids}
到目前为止,您的/get/{ids}
路径是冗余的
试一试
查询:
我建议大家在上仔细阅读,我在那篇文章中尝试了与被接受答案完全相同的URL(这是我问题中的第三个),我在那篇文章中尝试了与被接受答案完全相同的URL(这是我问题中的第三个),这很有效。但我不明白当我只传递一个参数时它为什么会起作用。例如:[HttpGet(“api/values/get/byparent/{parentId}”)]。当我使用URL调用此方法时,将调用该方法并传递参数。“dsadasda”作为“parentId”参数传递。但是在疑问句中,没有命名为“ids”的参数。这是有效的。但我不明白当我只传递一个参数时它为什么会起作用。例如:[HttpGet(“api/values/get/byparent/{parentId}”)]。当我使用URL调用此方法时,将调用该方法并传递参数。“dsadasda”作为“parentId”参数传递。但在问题案例中,没有命名为“ids”的参数。