在ASP.NET Web API中使用可选参数的属性路由

8 浏览
0 Comments

在ASP.NET Web API中使用可选参数的属性路由

我试图使用Web API 2属性路由来设置一个自定义的API。我已经使我的路由工作,这样我的函数就会被调用,但出于某种原因,我需要传入我的第一个参数才能使一切正常工作。我想支持以下URL:

http://mysite/api/servicename/parameter1
http://mysite/api/servicename/parameter1?parameter2=value2
http://mysite/api/servicename/parameter1?parameter2=value2¶meter3=value3
http://mysite/api/servicename/parameter1?parameter2=value2¶meter3=value3&p4=v4

最后3个URL可以正常工作,但第一个URL显示"找不到与请求匹配的控制器'控制器名称'上的操作"。

我的控制器如下所示:

public class MyServiceController : ApiController
{
    [Route("api/servicename/{parameter1}")]
    [HttpGet]
    public async Task Get(string parameter1, DateTime? parameter2, string parameter3 = "", string p4 = "")
    {
        // process
    }
}

0