我正在使用dotNet核心项目来托管Angular2应用程序。我遇到了深层链接网址的问题。
例如,当我最初浏览到http://localhost:54675/app/dashboard时,我收到404错误,因为在app / dashboard上没有任何内容可供使用。我想实际加载index.html(角度应用程序),然后路由将我带到app / dashboard。
如果我收到404且URL没有扩展名,我会使用下面的代码重定向到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();
}
});
当我使用包含JSON的参数进行路由时,这不起作用,例如: http://localhost:54675/app/repairReturnListing;filter=%7B%22Status%22:[%22AWP%22]%7D
我的if语句忽略了带有扩展名的请求,并且Path.HasExtension在此路径上抛出了ArgumentException。该路径在服务器端解析为:
“/应用程序/ repairReturnListing;过滤器= {\” 状态\ “:[\” AWP \ “]}”
我删除了'HasExtension'条件然后我收到很多控制台错误,寻找我没有托管的地图文件。像这样:
无法解析SourceMap: http://localhost:54675/lib/js/rxjs/operator/timeout.js.map
我没有在网络标签中看到这些错误。我认为这是用于调试的东西。
我的angular2应用使用HTML5路由。我使用静态文件来为angular2应用程序提供服务。我有一个webApi控制器返回一些配置数据(其余的数据由另一个webApi项目返回)。
等待404并重定向似乎是一种解决方法,它甚至都没有工作。 有关最佳方法的任何建议吗?
答案 0 :(得分:0)
查看ng2-kestrel-appserver http://tattoocoder.com/kestrel-as-a-static-server-for-angular/
正是您正在寻找的东西。它是为RC2创建的,但应该适用于当前版本,只需很少或不需要更改。