Angular13+.NetCore5部署到IIS访问出现500错误如何解决
IIS部署Angular 13 + .NET 5 报500错误排查方案
按优先级从高到低排查,都是实际部署踩过的高频问题:
- 首先确认服务器已安装*.NET 5.0 IIS托管捆绑包(Hosting Bundle)*,安装完成后必须执行命令
iisreset重启IIS服务,没装这个组件IIS无法正确转发请求到.NET Core进程,是这类500问题的最高发诱因。 - 检查站点对应应用程序池配置:.NET CLR版本必须选择「无托管代码」,托管管道模式设为集成,不要选成.NET Framework 2.0/4.x的版本,.NET Core是独立外驻进程运行,不需要IIS加载CLR。
- 配置目录权限:给站点部署的根目录,添加
IIS_IUSRS用户组的读取、执行权限,权限不足会导致进程无法读取配置文件、加载启动程序,直接返回500。 - 开启标准日志定位具体错误:
- 打开站点根目录下的
web.config文件,找到stdoutLogEnabled配置项,将值修改为true,将stdoutLogFile配置为.\logs\stdout - 手动在站点根目录新建名为
logs的文件夹,重新访问触发500错误后,进入logs文件夹查看生成的日志文件,里面会明确标注具体报错原因,常见问题包括数据库连接串配置错误、缺少程序集依赖、端口占用、Angular静态资源路径不匹配等。
- 打开站点根目录下的
- 校验Angular打包配置:如果站点部署在IIS的子路径下(例如
http://domain.com/admin),打包Angular时必须指定base-href参数,执行命令ng build --prod --base-href="/admin/",部署在站点根路径则配置为/,base路径不匹配会导致静态资源加载失败,连带触发服务端500错误。 - 校验发布配置:确认发布.NET项目时选择的运行时架构(x64/x86)和服务器环境、应用程序池启用32位应用的配置匹配,框架依赖部署模式要确保服务器装了对应版本的.NET 5运行时,独立部署模式不需要单独装运行时但要选对目标运行时。
仅修改环境配置为Production无法解决上述配置类问题,必须先定位到具体报错再针对性修复,不要盲目改配置。
内容的提问来源于stack exchange,提问作者C47_C0D3R
相关产品推荐
相关产品推荐

