为了账号安全,请及时绑定邮箱和手机立即绑定

找不到 C# netcore 控制器

找不到 C# netcore 控制器

C#
胡子哥哥 2021-07-22 19:16:06
我在现有的 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。怎么了?
查看完整描述

1 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

您缺少控制器的路由前缀。您正在使用属性路由,因此您需要包含整个所需的路由。


当前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已经有提供这些结果的辅助方法。


查看完整回答
反对 回复 2021-07-31
  • 1 回答
  • 0 关注
  • 239 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信