.net core 3,MVC,使用“端点路由”时不支持使用“ UseMvcWithDefaultRoute”配置MVC

时间:2019-10-07 08:59:57

标签: c# .net asp.net-mvc asp.net-core

我正在尝试创建一个基于ASP.NET Core 3的简单项目。

ASP.NET Core 2.2的MVC模板在启动类中包含以下行:

app.UseMvcWithDefaultRoute();

此行在ASP.NET Core 2.2和路由中均能正常工作,但是,在ASP.NET Core 3.0中,它不会编译并显示以下错误

  

使用端点路由时,不支持使用'UseMvcWithDefaultRoutee'配置MVC。

问题是:“如何在MVC应用程序的.net核心版本3中配置路由?”

3 个答案:

答案 0 :(得分:2)

ASP.NET Core 3不存在此功能,因为您可以看到here直到2.2才受支持。

注册完整的MVC管道时,您需要切换到app.UseMvc();

对于API,您需要执行以下操作

app.UseRouting();
app.UseEndpoints(builder => builder.MapControllers());

答案 1 :(得分:1)

我在以下官方文档“ Migrate from ASP.NET Core 2.2 to 3.0”中找到了解决方案:

有3种方法:

  
      
  1. 禁用端点路由。
  2.   
(add in Startup.cs)

services.AddMvc(option => option.EnableEndpointRouting = false)

OR

  
      
  1. 用UseEndpoints替换UseMvc或UseSignalR。
  2.   

就我而言,结果看起来像这样

  public class Startup
{

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }


    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}");
        });

    }
}

OR

  
      
  1. 使用AddControllers()和UseEndpoints()
  2.   
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();
        });

    }
}

答案 2 :(得分:0)

ASP.NET core 3.1中提供了端点路由,如果您想为Home控制器和Index操作添加默认路由,则必须禁用端点路由,以全面了解概念,请访问https://yogeshdotnet.com/use-of-app-usemvcwithdefaultroute-in-asp-net-core-3-1/