C# 具有多个参数的HttpClient.DeleteAsync

C# 具有多个参数的HttpClient.DeleteAsync,c#,parameters,httpclient,asp.net-core-2.2,http-delete,C#,Parameters,Httpclient,Asp.net Core 2.2,Http Delete,我正在尝试使HttpDelete请求具有多个参数。我不能使用body,也不想使用HttpPost 这是我的行动: [HttpDelete("{ids}")] public async Task Delete(int[] ids) { foreach(int id in ids) await _repository.DeleteLogAsync(id); } 这是我用来发送请求的代码: public async Task DeleteLogs(int[

我正在尝试使HttpDelete请求具有多个参数。我不能使用body,也不想使用HttpPost

这是我的行动:

[HttpDelete("{ids}")]
public async Task Delete(int[] ids)
{
    foreach(int id in ids)
        await _repository.DeleteLogAsync(id);
}
这是我用来发送请求的代码:

public async Task DeleteLogs(int[] ids)
{
    var queryString = HttpUtility.ParseQueryString(string.Empty);
    foreach (var id in ids)
    {
        queryString.Add("id", id.ToString());
    }

    var url = _configuration["BaseUrl"] + _configuration["Endpoint"] + "/" + queryString.ToString();

    using (var httpClient = new HttpClient())
    {                
        var response = await httpClient.DeleteAsync(url);
        response.EnsureSuccessStatusCode();
    }
}
我还使用了招摇过市,它向我展示了以下内容:

如果我尝试完全按照上面所示发送请求,我会得到415响应。我还发现,swagger需要两个参数,一个在body中,一个在查询中,这很奇怪

所以我尝试在我的操作中使用[FromQuery]。在本例中,请求通过,但在我的操作中int数组为空。所以我有点被卡住了,不知道如何继续。根据答案,它应该是有效的


有人能告诉我我做错了什么吗?

从操作中删除路由模板,并用[FromQuery]修饰参数

在客户端上,使用正确的参数名构造查询字符串

static readonly Lazy<HttpClient> httpClient = new Lazy<HttpClient>();
public async Task DeleteLogs(int[] ids) {
    var queryString = new QueryString(string.Empty);
    foreach (var id in ids) {
        queryString.Add("ids", id.ToString());
    }

    var url = _configuration["BaseUrl"] + _configuration["Endpoint"] + "/" + queryString.ToString();

    var response = await httpClient.Value.DeleteAsync(url);
    response.EnsureSuccessStatusCode();        
}

对c代码使用嗅探器,并与招摇过市的结果进行比较。查看标题,看看c标题是否与swagger匹配。
static readonly Lazy<HttpClient> httpClient = new Lazy<HttpClient>();
public async Task DeleteLogs(int[] ids) {
    var queryString = new QueryString(string.Empty);
    foreach (var id in ids) {
        queryString.Add("ids", id.ToString());
    }

    var url = _configuration["BaseUrl"] + _configuration["Endpoint"] + "/" + queryString.ToString();

    var response = await httpClient.Value.DeleteAsync(url);
    response.EnsureSuccessStatusCode();        
}