让 Angular2 路由在 IIS 7.5 上工作

新手上路,请多包涵

我一直在学习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 许可协议

阅读 333
2 个回答

(对于角度 2,角度 4)

按照提到的文章创建一个 web.config 文件。

 <configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="AngularJS Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

将它放在您网站的根目录(与 index.html 相同)。我的在 dist 文件夹中(angular-cli 项目)。

部署后,如果您有访问权限,请转到 IIS,您可以单击重写规则图标并看到它读取此配置。如果您没有看到重写规则的图标,则需要在“模块”图标下启用该模块。此代码片段不是由 be 编写的,但我想分享更好的实现细节。

原文由 Judson Terrell 发布,翻译遵循 CC BY-SA 3.0 许可协议

您应该使用 URL 重写模块 来实现这一点。 此处 提供了有关如何使用它的非常详细的信息

在 IIS 8 上为我工作的示例 web.config 代码段位于 此处

原文由 Arpit Agarwal 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题