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与配置文件
- 应用核心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
相关产品推荐
相关产品推荐

