我将一个简单的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编译并运行时,将调用控制器。
答案 0 :(得分:1)
2.2中的路由存在一些与新EndpointRouting功能中的错误相关的问题。该问题将在3.0中解决,但在2.2中,您可以通过禁用不需要的新功能来解决。
services.AddMvc(options => {
options.EnableEndpointRouting = false;
});