我一直在学习Angular2。在 nodejs 精简服务器上运行时,路由工作得很好。我可以转到主 (localhost:3000) 页面并浏览应用程序。我也可以输入 localhost:3000/employee,它将转到请求的页面。
该应用程序最终将运行在 Windows IIS 7.5 服务器上。如果我从主页 (localhost:2500) 开始,路由工作正常,我可以毫无问题地浏览应用程序。我遇到问题的地方是尝试直接转到主登录页面以外的页面 (localhost:2500/employee)。我收到 HTTP 错误 404.0。
这是我处理路由的 app.component 文件。
import { Component } from '@angular/core';
import { RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS } from '@angular/router-deprecated';
import { HTTP_PROVIDERS } from '@angular/http';
import { UserService } from './services/users/user.service';
import { LogonComponent } from './components/logon/logon.component';
import { EmployeeComponent } from './components/employee/employee.component';
@Component({
selector : 'opi-app',
templateUrl : 'app/app.component.html',
directives: [ROUTER_DIRECTIVES],
providers: [ROUTER_PROVIDERS, UserService, HTTP_PROVIDERS]
})
@RouteConfig([
{
path: '/',
name: 'Logon',
component: LogonComponent,
useAsDefault: true
},
{
path: '/employee',
name: 'Employee',
component: EmployeeComponent
}
])
export class AppComponent { }
我想说我理解这个问题。 IIS 正在寻找 /employee 的目录,但它不存在。我只是不知道如何让 IIS 知道路由。
原文由 Per Larsen 发布,翻译遵循 CC BY-SA 4.0 许可协议
(对于角度 2,角度 4)
按照提到的文章创建一个 web.config 文件。
将它放在您网站的根目录(与 index.html 相同)。我的在 dist 文件夹中(angular-cli 项目)。
部署后,如果您有访问权限,请转到 IIS,您可以单击重写规则图标并看到它读取此配置。如果您没有看到重写规则的图标,则需要在“模块”图标下启用该模块。此代码片段不是由 be 编写的,但我想分享更好的实现细节。