从ASP.NET Core 2.0升级到2.2后不再调用控制器

时间:2019-03-20 14:58:37

标签: asp.net-web-api asp.net-core

我将一个简单的ASP.NET Core项目从2.0更新到2.2,并更新了引用。此项目(仅)使用具有Route属性的MVC控制器。

更新后,再也找不到路由。所有HTTP请求都以404结尾。

我测试了.SetCompatibilityVersion(...)的许多组合,没有任何运气。从我能读到的有关此更新的内容中,我没想到需要进行任何其他更改。

我试图与一个新的“ webapi”项目进行比较。我看到的唯一区别是,启动中没有UseHsts()UseHttpsRedirection,控制器上没有[ApiController]属性,并且控制器是从Controller而不是其基础{{1}派生的}。我不明白这怎么解释了为什么不调用控制器的原因,并希望所有这些都能“按原样”工作。

控制器:

ControllerBase

启动:

    [Route("/")]
    public class RootController : Controller
    {
        private readonly ILogger _logger;

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

        [HttpGet]
        public IActionResult Index()
        {
            _logger.LogInformation("Ping received!");
            return new OkResult();
        }
    }

我应该在哪里看?

编辑:实际上,项目中的 public void ConfigureServices(IServiceCollection services) { // Unrelated stuff services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_2); // More unrelated stuff } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseMvc(); } 从2.0.7(使用2.1目标框架)更改为无版本(使用2.2目标框架)。在2.0编译并运行时,将调用控制器。

1 个答案:

答案 0 :(得分:1)

2.2中的路由存在一些与新EndpointRouting功能中的错误相关的问题。该问题将在3.0中解决,但在2.2中,您可以通过禁用不需要的新功能来解决。

services.AddMvc(options => {
            options.EnableEndpointRouting = false;

        });