ASP.NET Web API中带有可选参数的属性路由

时间:2014-03-13 19:03:09

标签: c# asp.net-web-api asp.net-web-api-routing attributerouting

我正在尝试使用Web API 2属性路由来设置自定义API。我的路由工作,我的函数被调用,但由于某种原因,我需要传入我的第一个参数,以便一切正常工作。以下是我要支持的网址:

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

最后3个网址有效但第一个网址显示“未找到与请求匹配的控制器'控制器名称'上的操作。”

我的控制器看起来像这样:

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

1 个答案:

答案 0 :(得分:67)

Web API要求显式设置可选值,即使是可以为空的类型...所以你可以尝试设置以下内容,你应该看到你的第一个请求成功

DateTime? parameter2 = null