2017-03-28 8 views
0

私は私のHomeControllerのために以下の設定をしています。すべてのMVCコントローラが/ mvc/[controler]/[action]から応答するようにしたいのですが、WebApiは/ api/MVC COREプロジェクトのための真のデフォルトルートを作るにはどうしたらいいですか?

にあります。

しかし、誰かがパスのないバージョンに行くと、/mvc/home/indexに、私の設定はそれを行うように見えません!

私はhttp://hostname/がhttpになったしたい:/ホスト名/ホーム/インデックス

[Route("mvc/[controller]")] 
[ApiExplorerSettings(IgnoreApi = true)] 
public class HomeController : Controller 
{ 
    [Route("Index")] 
    public IActionResult Index() 
    { 
     return View(); 
    } 

    [Route("Error")] 
    public IActionResult Error() 
    { 
     return View(); 
    } 
} 

私startup.cs:

 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
     loggerFactory.AddDebug(); 

     if (env.IsDevelopment()) 
     { 
      app.UseDeveloperExceptionPage(); 
     } 
     else 
     { 
      app.UseExceptionHandler("/Home/Error"); 
     } 
     app.UseStaticFiles(); 
     app.UseMiddleware(typeof(ErrorHandlingMiddleware)); 
     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       "default", 
       "mvc/{controller=Home}/{action=Index}/{id?}"); 
     }); 

     app.UseSwagger(); 

     app.UseSwaggerUI(c => 
     { 
      var swaggerendpoint = Configuration["SwaggerEndpoint"]; 
      c.SwaggerEndpoint(swaggerendpoint, "Public Cloud Interface"); 
     }); 
    } 
} 

答えて

2

特に/ケースのためにルートを追加します。

app.UseMvc(routes => 
    { 
     routes.MapRoute(
      "home", 
      "/", 
      new{controller="Home", Action="Index"}); 

     routes.MapRoute(
      "default", 
      "mvc/{controller=Home}/{action=Index}/{id?}"); 
    }); 
+0

これは「伝統的な」アプローチです。MVC 2 3&4用のMVCプロジェクトテンプレートにあります –

関連する問題