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

ASP.Net Core 3.1+Angular14发布到IIS后页面无法找到的问题求助

ASP.NET Core 3.1 + Angular 14 部署到本地IIS后无法访问(404错误)

我开发了基于ASP.NET Core 3.1和Angular 14的应用,在Visual Studio调试模式下运行完全正常,但发布到本地IIS文件夹后,访问时显示**"This localhost page can’t be found"**错误。

相关信息:

  • IIS错误页面截图
  • VS调试正常页面截图
  • Startup.cs代码
  • Program.cs代码
  • Web.config代码
  • 发布文件夹结构截图

排查与解决步骤

1. 检查IIS站点基础配置

  • 确认站点物理路径指向发布后的根目录(需包含web.config、wwwroot等核心文件)
  • 验证站点绑定:端口号是否被其他程序占用,主机名(如localhost)是否配置正确
  • 应用程序池设置:.NET CLR版本必须设为无托管代码,这是ASP.NET Core应用的强制要求
  • 权限检查:将应用程序池身份临时改为本地系统,排除文件夹访问权限问题

2. 确认ASP.NET Core托管环境

  • 打开「控制面板>程序>启用或关闭Windows功能」,检查是否已安装.NET Core 3.1 Runtime和ASP.NET Core模块/托管运行时
  • 若未安装,前往微软官网下载对应版本的ASP.NET Core托管包完成安装

3. 检查Web.config配置

  • 验证aspNetCore节点配置,确保processPath和arguments指向正确:
<aspNetCore processPath="dotnet" arguments=".\YourApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
  • 开启日志排查:将stdoutLogEnabled设为true,访问站点后查看logs文件夹下的日志,获取具体错误详情
  • SPA路由重写规则:Angular单页应用需配置重写规则,确保Web.config包含以下节点:
<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>

4. 验证发布文件夹结构

  • 确认发布目录包含:
    • 应用核心dll文件(如YourApp.dll)
    • web.config配置文件
    • wwwroot文件夹(需包含Angular编译后的index.html、js、css等静态资源)
    • 所有依赖的第三方dll与配置文件
  • 若通过Visual Studio发布,需确认选择「文件夹」发布目标,并勾选生成IIS相关配置选项

5. 独立运行应用排查

  • 打开命令提示符,进入发布文件夹,执行命令:dotnet YourApp.dll
  • 若应用能正常启动并输出日志,说明问题出在IIS配置;若启动失败,根据命令行输出的错误信息排查依赖或代码问题

6. 检查Startup.cs与Program.cs配置

  • Startup.cs的Configure方法需包含静态文件与SPA中间件:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 其他中间件(如异常处理、路由)...
    app.UseStaticFiles();
    
    if (!env.IsDevelopment())
    {
        app.UseSpaStaticFiles();
    }

    app.UseRouting();

    // 授权、API路由等中间件...

    app.UseSpa(spa =>
    {
        spa.Options.SourcePath = "ClientApp"; // 对应你的Angular项目路径
        if (env.IsDevelopment())
        {
            spa.UseAngularCliServer(npmScript: "start");
        }
    });
}
  • Program.cs需正确构建WebHost:
public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

内容的提问来源于stack exchange,提问作者Amrinder Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:01:39