使用.NET Core进行Angular2路由

时间:2017-03-24 06:25:01

标签: angular asp.net-core

我有一个使用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;
    }
}

1 个答案:

答案 0 :(得分:1)

我发现它here

您必须在应用程序的index.html中添加<base href>元素才能使pushState路由正常工作。在引用CSS文件,脚本和图像时,浏览器使用<base href>值为相对URL添加前缀。

所以在你的情况下我猜它是:

<base href="/myapp/" >