从ASP.NET Core 2.0升级到2.2后,控制器不再拨打



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

更新后,永远找不到路线。所有HTTP请求最终都有404。

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

我尝试与一个新的" WebAPI"项目进行比较。我看到的唯一区别是启动中没有UseHsts()UseHttpsRedirection,控制器上没有[ApiController]属性,而从Controller而不是其基本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();
        }

我应该在哪里看?

编辑:实际上,"Microsoft.AspNetCore.All实际上从2.0.7(带有2.1个目标框架)更改为项目中没有版本(具有2.2个目标框架)。使用2.0编译和运行时,控制器被调用。

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

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

最新更新