2016-12-06 66 views
0

我有一个ASP.Net核心应用程序,它只用于web API并具有Angular 2前端。当我添加路由到角度应用程序并导航到Angular中的某个路线时,它会导航,但是当我刷新页面时,我得到的页面未找到错误。 我在配置方法如下aspnet核心和angular2页面刷新问题

app.Use(async (context, next) => 
     { 
      await next(); 

      if (context.Response.StatusCode == 404 
       && !Path.HasExtension(context.Request.Path.Value)) 
      { 
       context.Request.Path = "/index.html"; 
       context.Response.StatusCode = 200; 
       await next(); 
      } 
     }); 

我尝试添加重写规则,就像在 Angular2 routing with Asp.net 4.5

我收到客户端的错误,当我这样做

Uncaught SyntaxError: Unexpected token <

任何帮助表示赞赏。谢谢

+0

我有上面的代码app.UseStaticFiles();我改变了顺序并把app.UseStaticFiles();在它上面的代码后它的作品。 – leed1

回答

2

你的代码比真正的管理更难以修复。

您需要使它成为服务器端管理的路由,然后根据需要从客户端正确管理。

因为我在我的ASP.NET/Angular2项目中使用MVC,所以我这样做是为了使我的URL不会调用API将使用FallBackRoute进行管理。

 app.UseMvc(r => 
     { 
      r.MapRoute(
       name: "default", 
       template: "{controller}/{path?}/{action}/{id?}", 
       defaults: new { controller = "Home", action = "Index" } 
      ); 
      r.MapSpaFallbackRoute(
       name: "spa-fallback", 
       defaults: new { controller = "Home", action = "Index" } 
      ); 
     }); 

这样,在刷新或手动URL负载,我index.cshtml会被加载并加载Angular2睿那将管理与路由器想要的路线。

这是一个比监视404错误更好的事情。