将ASP Core默认路由更改为不同的控制器

时间:2016-12-14 11:38:51

标签: asp.net-core asp.net-core-mvc asp.net-core-1.0

我无法让我的ASP .NET Core MVC站点路由到Home以外的其他控制器。我更改了Startup中的默认路由(它是唯一的路由):

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

我的ProfileController看起来像:

public class ProfileController : Controller
{
    [HttpGet("index")]
    public IActionResult Index() 
    {
        return View();
    }
    ...
}

但我得到的只是在导航到基本URL时从Kestrel服务器返回的404。

1 个答案:

答案 0 :(得分:0)

我刚刚创建了一个新项目,它对我有用。也许你做错了什么。

这就是我的所作所为。

  • 创建一个新的asp.net核心Web应用程序项目(选择MVC模板)
  • 更新Startup.cs中的默认路由:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {
      loggerFactory.AddConsole(Configuration.GetSection("Logging"));
      loggerFactory.AddDebug();
    
      if (env.IsDevelopment()) {
        app.UseDeveloperExceptionPage();
        app.UseBrowserLink();
      } else {
        app.UseExceptionHandler("/Home/Error");
      }
    
      app.UseStaticFiles();
    
      app.UseMvc(routes => {
        routes.MapRoute(
            name: "default",
            template: "{controller=profile}/{action=index}/{id?}");
      });
    }
    
  • 创建配置文件控制器:

    public class ProfileController : Controller {
      // GET: /<controller>/
      public IActionResult Index() {
        return View();
      }
    }
    
  • 为配置文件控制器创建索引视图:

enter image description here

  • 运行项目,应打开配置文件的索引页面。

更新:

问题是配置文件控制器中的[HttpGet("index")]