You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.Net Core 2.0+Angular 4部署IIS后刷新404,无web.config如何解决?

解决Angular 4应用IIS部署后刷新路由失效的问题

当然可以手动添加web.config文件来解决这个问题,这也是处理单页应用(SPA)路由在IIS上刷新失效的标准方案之一,下面给你详细的解决步骤和替代方案:

方案一:手动添加web.config配置

  1. 创建web.config文件:在你的.NET Core项目根目录(和.csproj文件同一层级)新建一个名为web.config的文件。
  2. 写入完整的重写规则:把以下完整的配置内容复制进去(你提供的片段不完整,需要补充完整的规则逻辑):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Angular 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="/index.html" />
        </rule>
      </rules>
    </rewrite>
    <!-- 注意:如果你的应用部署在IIS虚拟目录下,比如/MyAngularApp,要把action里的url改成/MyAngularApp/index.html -->
  </system.webServer>
</configuration>
  1. 原理说明:Angular使用的是客户端路由,当你刷新页面时,浏览器会直接请求当前路由的URL(比如/user/profile),但IIS在服务器上找不到对应的物理文件,就会返回404错误。这个重写规则会检查请求的不是实际存在的文件或目录时,自动把请求重写到Angular的入口文件index.html,让Angular的路由器来处理这个路由请求。
  2. 前置条件:确保你的IIS服务器已经安装了URL Rewrite模块,如果没装的话,重写规则不会生效,需要在IIS官方渠道下载安装该模块。

方案二:利用ASP.NET Core的路由Fallback(无需web.config)

如果你不想依赖IIS的URL Rewrite模块,也可以通过ASP.NET Core本身的路由配置来处理:
在项目的Startup.cs文件的Configure方法中,添加SPA fallback路由:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    // 其他中间件配置(比如静态文件、日志等)...

    app.UseMvc(routes =>
    {
        // 你的常规MVC路由配置(如果有的话)
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");

        // 添加SPA Fallback路由,将所有非API/非静态文件的请求导向Angular入口页面
        routes.MapSpaFallbackRoute(
            name: "spa-fallback",
            defaults: new { controller = "Home", action = "Index" });
    });
}

这个配置的作用是:当ASP.NET Core接收到的请求不是静态文件,也匹配不到已定义的MVC路由时,会自动导向HomeController的Index方法,而这个方法通常会返回Angular的index.html页面,从而让Angular路由器接管路由处理。

额外注意事项

  • 如果你的应用部署在IIS虚拟目录下,不管用哪种方案,都要确保路径配置正确:比如web.config里的重写URL要加上虚拟目录名称,或者ASP.NET Core的路由要考虑虚拟目录的路径。
  • 部署时要确保web.config(如果用方案一)被正确发布到IIS的站点目录中,不要被忽略。

内容的提问来源于stack exchange,提问作者sailaja m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:55:00