REST API不能接受C#中的多个参数

时间:2019-04-28 12:32:38

标签: c# .net asp.net-web-api asp.net-web-api2

我正在使用.NET 4.5框架来构建REST API。该API有一个带有多个参数的get方法,但是当我调用该API时,它表明错误的请求第二个参数为null。实际上,我正在传递第二个参数的值。下面是方法的实现,

[HttpGet()]
[Route("api/Mycontroller/{useid:int}")]
public List<GetDetails> GET([FromUri()] int useid,  DateTime loginDate)
{
    // Some logic
}

通过C#代码进行请求

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost/abc/");
client.DefaultRequestHeaders.Clear();

client.DefaultRequestHeaders.Accept.Add(
            new MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage clientResponse = Task.Run(async () => { return await client.GetAsync("api/Mycontroller/" + userid+"?LoginDate=" +TodaysDateParameter); }).Result;

由于错误的请求,结果返回空值。

我尝试了查询字符串的各种可能性,但是没有任何效果。我试图删除路由fromuri()fromBody(),但这也无济于事。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

您还需要将第二个参数添加到您方法的[Route]属性中,如下所示:

[Route("api/Mycontroller/{useid:int}/{loginDate}")]
public List<GetDetails> GET([FromUri()] int useid,  DateTime loginDate)

然后您可以像这样调用API方法:

string queryUrl = $"api/Mycontroller/{userid}/{TodaysDateParameter}";

HttpResponseMessage clientResponse = Task.Run(async () => { return await client.GetAsync(queryUrl).Result;