将Angular部署到IIS 7.5无法正常工作

时间:2019-02-15 08:00:26

标签: angular iis build

我,想撤消我的Angular项目,但它丢失了组件

我的过程

第1步:

我执行cmd:

ng-build --prod

第2步:

我正在使用 dist

内的路径在IIS中添加网站

第3步:

索引页工作正常,但未找到其他组件登录404

  

http://localhost/login HTTP错误404.0-找不到

在文件 App.Module.Ts 中,我是配置路由

const routesConfig:Routes=
[
  {path:"kinds",component:KindsComponent},
  {path:"",component:FilmsComponent},
  {path:"films",component:FilmsComponent},
  {path:"login",component:LoginComponent},
  {path:"accounts",component:AccountsComponent},
  {path:"customers",component:CustomersComponent},
  {path:"director",component:DirectorComponent}
];
  

再次说明: http://localhost正常工作,但是在我构建项目并在IIS中部署时找不到其他组件

最后:

它如何工作?我的错误在哪里?

1 个答案:

答案 0 :(得分:1)

您需要在IIS中为任何路由创建到 index.html 的重定向,因为在Angular SPA中,应用负责路由而不是服务器。请参见Angular routing。 / p>

例如请求 http://yourdomain/ ->为 index.html 提供服务,最后启动了应用程序。

但例如已请求 http://yourdomain/login ,并且没有服务器端重定向到index.html,服务器没有任何资源映射到该路由,并使用404 - Not Found解决了请求错误。

一旦您为任何会导致404 - Not Found错误(除css,images字体等资产)结束的请求提供服务 index.html ,Angular路由器就会接管并显示应用程序启动后即可查看。

以下是IIS的重写规则示例:

<rule name="Angular" 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>