2017-03-21 68 views
0

我正在嘗試爲後端和angular 1.5.x爲前端建立一個網頁應用程序asp.net core。問題是很難啓用服務器分析角路由。我加入這行代碼到startup.cs和埃夫裏的東西正常工作:使用asp.net核心啓用角路由

DefaultFilesOptions options = new DefaultFilesOptions(); 
      options.DefaultFileNames.Clear(); 
      options.DefaultFileNames.Add("Index.html"); 
      app.Use(async (context, next) => 
      { 
       await next(); 

       if (context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value)) 
       { 
        context.Request.Path = "/Index.html"; 
        await next(); 
       } 
      }) 
      .UseCors("AllowAll") 
      .UseDefaultFiles(options) 
      .UseStaticFiles() 
      .UseIdentity() 
      .UseMvc(); 

,但我看起來像它不是一個很好的做法,而這個問題應在appsettings.json來解決。有任何想法嗎 ?

+0

使用JavaScriptServices服務器端路線:https://開頭github上。 com/aspnet/JavaScriptServices,它們添加了服務器端節點j(包括角度)渲染以及啓用默認路由,該路由將首次調用索引/家庭/無論何處嵌入SPA的頁面。所有確鑿的調用都由角色路由器 – Tseng

+0

@Tseng haw來處理,並使用appsettings.json文件進行處理? –

+0

爲什麼?你不太可能在運行中改變路線/控制器。 Angular SPA只需要一個入口點(這就是名稱來自** Single ** Page Application的地方) – Tseng

回答

1

答案(大部分)是在UseMVC選項... 你應該實現,如圖

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

    routes.MapSpaFallbackRoute("spa-fallback", new { controller = "Home", action = "Index" }); 
}); 

看看這個link

+0

我說(主要),因爲我從來沒有測試過,但我認爲這是一個合理的答案... –