Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net核心中的常规默认路由不起作用_C#_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

C# asp.net核心中的常规默认路由不起作用

C# asp.net核心中的常规默认路由不起作用,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我似乎无法在ASP.NET Core 2.0中使用默认路由,我是否忽略了什么 Startup.cs public class Startup { public IConfiguration Configuration { get; set; } public Startup(IConfiguration configuration) { Configuration = configuration; } public void Confi

我似乎无法在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" });
        });
    }
}
...

app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

...
HomeController.cs

[Route("[controller]")]
public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}
...

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}

....

当我浏览到URL时,什么都没有发生,它也不会重定向到主页?

只需删除控制器上的
[Route(“[controller]”)
装饰

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}
使用传统路由模式在
UseMvc
方法中注册的默认路由,现在它应该适用于
yourBaseUrl
yourBaseUrl\Home
yourBaseUrl\Home\Index

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

[Route("[controller]")]
public class HomeController : Controller
{
    [Route("myseofriendlyurlslug")]
    public IActionResult Index()
    {
        return View();
    }
}
现在可以通过
yourBaseUrl/Home/myseofriendlyurlslaug

请记住,当像上面那样使用属性路由时,传统的路由模式将不起作用

这工作很好

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

app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

...
//HomeController.cs

[Route("[controller]")]
public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}
...

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}

....

你在尝试什么url?当我转到localhost:5000/Home时,它会显示页面。它只是不把它作为默认值…您不需要定义“模板”吗?只是问问而已。我也碰到过这个,现在想想就明白了。属性应优先于默认路由模板。