【发布时间】:2014-02-19 01:29:29
【问题描述】:
我有这样的课程:
public class FooController : ApiController
{
[System.Web.Http.Route("live/topperformers")]
[System.Web.Http.AcceptVerbs("GET", "POST")]
[System.Web.Http.HttpGet]
public List<string> GetTopPerformers()
{
return new List<string>();
}
}
当我通过“http://foo.com/live/topperformers”访问它时,它运行良好。所以现在我想在这个方法中添加一个可选的 DateTime 参数,所以我修改了该方法以获取一个 DAteTime 参数,并使其可以为空。
public class FooController : ApiController
{
[System.Web.Http.Route("live/topperformers/{dateTime:DateTime}")]
[System.Web.Http.AcceptVerbs("GET", "POST")]
[System.Web.Http.HttpGet]
public List<string> GetTopPerformers(DateTime? dateTime)
{
return new List<string>();
}
}
当我尝试访问不带参数的 URL 时,与我之前访问的相同 - 它给出了 404。像“http://foo.com/live/topperformers/2010-01-01”这样输入日期值可以正常工作。但没有日期,它会给出 404 .
我认为 Web API 以这种方式支持可选参数?我可以简单地重载并拥有两个版本,但这是否可能只用一种方法?
【问题讨论】:
标签: c# asp.net asp.net-web-api