2017-07-13 129 views
0

我想部署我的應用程序在Angular到生產服務器,但我有問題。應用程序正常工作時,我只使用角路由(更改組件,而不是重定向),但當我在瀏覽器刷新頁面,我得到一個從IIS返回的404頁面(我使用IIS作爲Web服務器)角度部署 - 404頁面刷新

這是我的角路由:

const appRoutes: Routes = [ 
    { path: '', redirectTo: '/home', pathMatch: 'full', canActivate: [AuthGuard] }, 
    { path: 'home', component: DashboardComponent, canActivate: [AuthGuard] }, 
    { path: "profile", component: UserProfileComponent, canActivate: [AuthGuard] }, 
    { path: '400', component: ErrorComponent }, 
    { path: '401', component: ErrorComponent }, 
    { path: '403', component: ErrorComponent }, 
    { path: '404', component: ErrorComponent }, 
    { path: '500', component: ErrorComponent }, 
    { path: '503', component: ErrorComponent }, 
    { path: '**', redirectTo: '/404' } 
] 
+0

你對某些路由實現了''[AuthGuard]'',所以你必須在'app.routing'文件中使用'providers'作爲這個'providers:[AuthGuard,LoginService]'來註冊'services'你使用'[AuthGuard]'。是你做的嗎? – nivas

+0

路由在routing.module.ts中定義,它在提供者AuthGuard的app.module中使用。必須是routing.module中的提供者,還是隻能在app.module中提供? – bluray

+0

你必須用@NgModule裝飾器在'routing.module.ts'中聲明它裝飾器 – nivas

回答

2

我修改了web.config中我的應用程序:

<configuration> 
    <system.webServer> 
<rewrite> 
    <rules> 
     <rule name="redirect all" stopProcessing="true"> 
      <match url="^(.*)$" ignoreCase="false" /> 
      <conditions logicalGrouping="MatchAll"> 
       <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" /> 
      </conditions> 
      <action type="Rewrite" url="./" appendQueryString="true" /> 
     </rule> 
    </rules> 
</rewrite> 
    </system.webServer> 
</configuration> 

在index.html的是<base href="./">。刷新頁面現在可以。

+0

這適用於角度4和網絡核心2.0。很棒的發現 –