刷新浏览器时,.Net Core与Angular 4:404错误

时间:2018-03-20 07:35:18

标签: angular asp.net-core-2.0

我使用.Net core 2.0,visual studio 2017构建了一个角度4应用程序,并部署到IIS Web服务器上的生产服务器。刷新时路由在localhost上正常工作,但不能正常工作。我在web.config文件中看到了IIS的stackoverflow中的一些答案。但我的项目结构下没有web.config文件。我可以手动添加它还是如何修复它。

     <system.webServer>
  <rewrite>
<rules> 
  <rule name="Main Rule" 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>

这是我的app.routing文件

   const appRoutes: Routes = [
  { path: '', redirectTo: 'admin-dashboard', pathMatch: 'full' },
  { path: 'login', component: LoginComponent },
  { path: 'forgotpassword', component: ForgotPasswordComponent },
  { path: 'user-dashboard', component: DashboardComponent, canActivate: [AuthGuard] },
 { path: 'notifications', component: NotificationsComponent, canActivate: [AuthGuard] },
 {
path: 'admin-dashboard', component: AdminDashboardComponent, canActivate: [AuthGuard],
children: [
  { path: '', component: ChairmanMessagesComponent, canActivate: [AuthGuard]},
  { path: 'quotes', component: QuotesComponent, canActivate: [AuthGuard] },
  { path: 'users', component: UsersComponent, canActivate: [AuthGuard] },
  { path: 'notifications', component: AdminNotificationsComponent, canActivate: [AuthGuard] },
]

},  ];

 export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);

请让我知道。

3 个答案:

答案 0 :(得分:2)

在后端(服务器端)只是将所有(404)错误/无法识别的请求映射到索引(包括所有角度构建脚本)。然后它返回索引。在前端,你可以得到你需要的东西。它映射到你需要的页面。

例如: - In spring Boot back-end this is an example answer

答案 1 :(得分:2)

在以下路径上刷新浏览器时,我遇到了同样的问题:/ users 我通过创建一个文件夹来修复它:users 并在文件中:index.html

<!<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>redirect users</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script>
        window.location.href = 'http://my-server:4200/';
    </script>
</head>
<body>    
</body>
</html>

我已阅读的其他解决方案:

1)使您的服务器在404错误时重定向到index.html。

2)让您的apache或iis在每个路由路径的末尾添加/index.html

答案 2 :(得分:0)

路由的应用必须回退到index.html,所以请查看此link并为IIS添加配置,如果您正在使用的,或在此处编辑您的配置

<action type="Rewrite" url="/index.html" />