Asp.net core ASP.NET核心路由错误

Asp.net core ASP.NET核心路由错误,asp.net-core,asp.net-core-webapi,Asp.net Core,Asp.net Core Webapi,我有一条像http://localhost:63037/api/futuresMarginRuns/7/data但另一个控制器API使用路由http://localhost:63037/api/futuresMarginRuns/2018-07-11/数据不工作,甚至控制器API中的断点也未命中。 下面是API签名 [HttpGet] [Route("/api/futuresMarginRuns/{id}/data")] public async Task<IAct

我有一条像
http://localhost:63037/api/futuresMarginRuns/7/data
但另一个控制器API使用路由
http://localhost:63037/api/futuresMarginRuns/2018-07-11/数据
不工作,甚至控制器API中的断点也未命中。 下面是API签名

    [HttpGet]
    [Route("/api/futuresMarginRuns/{id}/data")]
    public async Task<IActionResult> GetFuturesMarginRunDataAsync(long id)
    {
        var data = await _repository.GetAllAsync(id).ConfigureAwait(false);
        return Ok(data);
    }

    [HttpGet]
    [Route("/api/futuresMarginRuns/{runDate}/data")]
    public async Task<IActionResult> GetFuturesMarginRunDataByDateAsync(DateTime runDate)
    {
        var data = await _repository.GetAllAsync(runDate).ConfigureAwait(false);
        return Ok(data);
    }
[HttpGet]
[路由(“/api/futuresMarginRuns/{id}/data”)]
公共异步任务GetFutureSmarginRundaAsync(长id)
{
var data=await\u repository.GetAllAsync(id).ConfigureAwait(false);
返回Ok(数据);
}
[HttpGet]
[路由(“/api/futuresMarginRuns/{runDate}/data”)]
公共异步任务GetFutureSmarginRunDataAsync(日期时间运行日期)
{
var data=await\u repository.GetAllAsync(runDate).ConfigureAwait(false);
返回Ok(数据);
}
在第一种情况下,我得到的是json数据,但在第二种情况下,断点没有命中,因此看起来路由没有正确映射到API,在这种情况下,我预期会出现错误,但我得到的是空的
[]

如何让API正常工作

谢谢

您需要添加一些到您的路线中。路由约束告诉路由引擎,如果
id
应该是int,则仅当该点中的文本可以转换为int(以及类似的日期等)时,才匹配该路由

因此,我会将您的路线更改为以下路线:

[HttpGet]
[Route("/api/futuresMarginRuns/{id:long}/data")]
public async Task<IActionResult> GetFuturesMarginRunDataAsync(long id)

[HttpGet]
[Route("/api/futuresMarginRuns/{runDate:datetime}/data")]
public async Task<IActionResult> GetFuturesMarginRunDataByDateAsync(DateTime runDate)
[HttpGet]
[路由(“/api/futuresMarginRuns/{id:long}/data”)]
公共异步任务GetFutureSmarginRundaAsync(长id)
[HttpGet]
[路由(“/api/futuresMarginRuns/{runDate:datetime}/data”)]
公共异步任务GetFutureSmarginRunDataAsync(日期时间运行日期)