ASP.NET Core默认路由无效

Tan*_*uyB 4 c# asp.net-core-mvc asp.net-core

似乎无法让我的默认路由在ASP.NET Core 2.0中运行,我忽略了什么?

Startup.cs

public class Startup
{
    public IConfiguration Configuration { get; set; }

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

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

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseMvc(routes => 
        {
            routes.MapRoute("default", "{controller}/{action}/{id?}", new { controller = "Home", action = "Index" });
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

HomeController.cs

[Route("[controller]")]
public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我浏览网址时,没有任何反应,没有重定向到主页?

Shy*_*yju 13

只需删除[Route("[controller]")]控制器上的装饰即可.

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

于默认的路由,你的注册UseMvc方法与传统的路由模式,现在它应该工作yourBaseUrl,并yourBaseUrl\HomeyourBaseUrl\Home\Index

通常,您使用[Route("[controller]")]控制器级别上的属性作为该控制器上所有路由的路由前缀,以便为操作方法创建自定义属性路由定义.

[Route("[controller]")]
public class HomeController : Controller
{
    [Route("myseofriendlyurlslug")]
    public IActionResult Index()
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在可以通过访问您的操作方法了 yourBaseUrl/Home/myseofriendlyurlslug

请记住,在使用上述属性路由时,传统的路由模式将不起作用.