为什么第二个控制器在 asp.net webApi 中不起作用?

Why second controller doesn't work in asp.net webApi?

我想在我的 asp.net WebApi 中添加第二个控制器,但是当我添加它时它不起作用...第一个控制器工作正常

我的浏览器没有找到 404

怎么了?

namespace testing.Controllers
   {
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering",           
   "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        [HttpGet]
        public IEnumerable<WeatherForecast> Get()
        {
            var rng = new Random();
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = rng.Next(-20, 55),
                Summary = Summaries[rng.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }
}

第二个在下面

{
    [Route("[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        [HttpGet]
        public int Get()
        {
            return 100050;
        }
    }
}

谁能告诉我怎么了?

您正在控制器 class 上使用属性 [Route("[controller]")]。字符串 [controller] 表示“class 的名称, 没有实际的单词“Controller”

这意味着,控制器的名称是“Values”(或前一个控制器的“WeatherForecast”)。

因此,您想要的最终 url 路线是 /Values,而不是 /ValuesController

您可以在 MS Docs page 上阅读更多关于它如何工作的信息(整个页面有很多有用的信息,而不仅仅是那个部分)。