我有一个使用angular2路由的ASP.NET CORE应用程序。运行本地路由按预期解析。当我发布到服务器(运行IIS 7)时,路由似乎解析为服务器根目录而不是它们部署到的网站,但是,它们仍然呈现页面。在下面的示例中,"页面网址"是我导航到的页面,但是"结果网址是#34;是浏览器地址栏中显示的内容。
page url --> http://myserver/myapp/home
result url --> http://myserver/home
有关为何发生这种情况的任何想法?这是IIS设置,还是Angular路由问题或.NET CORE配置问题?
以下是我在angular2中配置路线的方法。
const routes: ClientRouterConfig = [
{ displayName: 'Dashboard', icon: 'fa fa-tachometer', path: '', redirectTo: 'home', pathMatch: 'full' },
{ showInNavigationMenu: true, displayName: 'Dashboard', icon: 'fa fa-tachometer', path: 'home', component: HomeComponent },
{ showInNavigationMenu: true, displayName: 'New Work Order', icon: 'fa fa-plus', path: 'workorder', component: WorkorderComponent },
{ showInNavigationMenu: false, displayName: 'Work Order', icon: 'fa fa-wrench', path: 'workorder/:id', component: WorkorderComponent },
{ showInNavigationMenu: false, displayName: 'New Task', icon: 'fa fa-user', path: 'task/create/:woid', component: TaskComponent },
{ showInNavigationMenu: false, displayName: 'Task', icon: 'fa fa-user', path: 'task/:id', component: TaskComponent },
{ displayName: 'Dashboard', icon: 'fa fa-tachometer', path: '**', redirectTo: 'home' } //this must be last
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {
getRoutes() {
return routes;
}
}
答案 0 :(得分:1)
我发现它here:
您必须在应用程序的index.html中添加<base href>
元素才能使pushState路由正常工作。在引用CSS文件,脚本和图像时,浏览器使用<base href>
值为相对URL添加前缀。
所以在你的情况下我猜它是:
<base href="/myapp/" >