Я обновил простой проект ASP.NET Core с 2.0 до 2.2, обновляя ссылки. В этом проекте (только) используются контроллеры MVC с атрибутами Route
.
После обновления маршруты не найдены. Все 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();
}
Куда мне смотреть?
EDIT : "Microsoft.AspNetCore.All
фактически было изменено с 2.0.7 (с целевой структурой 2.1) на версию (с целевой платформой 2.2) в проекте. При компиляции и запуске с 2.0 вызывается контроллер.