找不到 C# netcore 控制器

我在现有的 IdentityServer4 项目中添加了一个 netcore 控制器。这是我的代码


namespace IdentityServer4.Quickstart.UI

{

  public class VersionController : Controller

  {

    IVersionService _repository;

    public VersionController(IVersionService repository)

    {

        _repository = repository;

    }

    [HttpGet(nameof(GetBackgroundId))]

    public IActionResult GetBackgroundId()

    {

        return new OkObjectResult(_repository.GetBackgroundId());

    }

    [HttpPut(nameof(SetBackgroundId))]

    public IActionResult SetBackgroundId([FromQuery]int id)

    {

        _repository.SetBackgroundId(id);

        return new NoContentResult();

    }

 }

}

我在startup.cs中也有以下代码行


app.UseMvcWithDefaultRoute();

我可以通过以下网址访问帐户控制器


http://localhost:5001/account/login

但是,我无法通过以下网址访问版本控制器:


http://localhost:5001/version/GetBackgroundId

错误代码是 404。


怎么了?


胡子哥哥
浏览 240回答 1
1回答

jeck猫

您缺少控制器的路由前缀。您正在使用属性路由,因此您需要包含整个所需的路由。当前GetBackgroundId控制器操作将映射到http://localhost:5001/GetBackgroundId添加路由到控制器[Route("[controller]")]public class VersionController : Controller {    IVersionService _repository;    public VersionController(IVersionService repository) {        _repository = repository;    }    //Match GET version/GetBackgroundId    [HttpGet("[action]")]    public IActionResult GetBackgroundId() {        return Ok(_repository.GetBackgroundId());    }    //Match PUT version/SetBackgroundId?id=5    [HttpPut("[action]")]    public IActionResult SetBackgroundId([FromQuery]int id) {        _repository.SetBackgroundId(id);        return NoContent();    } }还要注意路由令牌的使用,而不是更新响应,Controller已经有提供这些结果的辅助方法。
打开App,查看更多内容
随时随地看视频慕课网APP