我有一只Asp。Net core 2.2项目。
最近,我把。net core 2.2版本改成了。net core 3.0 Preview 8。在这个更改之后,我看到这个警告消息:
使用'UseMvc'配置MVC时,使用端点是不支持的
路由。要继续使用“UseMvc”,请设置
“MvcOptions。EnableEndpointRouting = false' inside 'ConfigureServices'。
我明白,通过设置EnableEndpointRouting为false,我可以解决这个问题,但我需要知道解决它的正确方法是什么,以及为什么端点路由不需要UseMvc()函数。
我发现这个问题是由于. net Core框架的更新。最新发布的。net Core 3.0版本需要显式地选择使用MVC。
当人们试图从旧的。net Core(2.2或预览3.0版本)迁移到。net Core 3.0时,这个问题最为明显
如果从2.2迁移到3.0,请使用下面的代码来修复这个问题。
services.AddMvc(options => options.EnableEndpointRouting = false);
如果使用。net Core 3.0模板,
services.AddControllers(options => options.EnableEndpointRouting = false);
修改后的ConfigServices方法如下所示:
谢谢你!
我在下面的官方文档中找到了解决方案。NET Core 2.2到3.0":
有3种方法:
用UseEndpoints替换UseMvc或UseSignalR。
在我的例子中,结果是这样的
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
//Old Way
services.AddMvc();
// New Ways
//services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseRouting();
app.UseCors();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}");
});
}
}
或
2. 使用AddControllers()和UseEndpoints()
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseRouting();
app.UseCors();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
或
3.禁用端点路由。正如异常消息所建议的,并在文档的以下部分中提到:使用不带端点路由的mvc
services.AddMvc(options => options.EnableEndpointRouting = false);
//OR
services.AddControllers(options => options.EnableEndpointRouting = false);