Angular 16部署IIS后Asset文件夹文件返回403禁止访问问题排查
排查方向及解决方案
1. 文件权限问题
- 检查异常服务器
assets文件夹及其所有子文件(JSON、图片等)的NTFS权限,确保IIS应用池的标识用户(格式为IIS AppPool\你的应用池名称)拥有读取权限,可对照正常服务器的权限配置调整。 - 注意:若部署时手动复制文件,可能继承父目录的限制权限,需手动添加应用池用户的读取权限。
2. IIS MIME类型缺失
.json和图片文件的MIME类型未配置时,IIS会拒绝请求返回403:- 打开IIS管理器,进入对应站点 → 功能视图 → MIME类型 → 添加
.json,MIME类型设为application/json; - 同时确认logo对应的格式(如
.png/.svg)的MIME类型已存在,缺失则补充。
- 打开IIS管理器,进入对应站点 → 功能视图 → MIME类型 → 添加
3. URL重写规则错误
- Angular单页应用依赖URL重写,若规则未排除
assets目录,会拦截静态文件请求:- 对比两台服务器的
web.config,确保重写规则包含assets排除项:<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" /> <add input="{REQUEST_URI}" pattern="^/assets/" negate="true" /> </conditions> <action type="Rewrite" url="/index.html" /> </rule>
- 对比两台服务器的
4. Angular构建路径不匹配
- 若异常服务器站点使用虚拟目录,而构建时未指定
base-href,会导致assets请求路径错误:- 用浏览器开发者工具查看失败请求的URL,确认是否与服务器实际文件路径一致;
- 若路径错误,重新构建应用:
ng build --base-href /你的虚拟目录路径/后重新部署。
5. IIS静态内容功能未启用
- 异常服务器可能未安装「静态内容」角色服务,无法提供静态文件:
- 打开服务器管理器 → 添加角色和功能 → 找到Web服务器(IIS)→ 常见HTTP功能 → 勾选「静态内容」,安装后重启IIS。
关于翻译文件加载的说明
你提到的每次加载5个JSON文件是ngx-translate-multi-http-loader的正常行为:它会按需加载当前路由对应的翻译文件,已加载的文件会被缓存,后续切换路由时仅加载未缓存的文件,不属于异常问题。
内容的提问来源于stack exchange,提问作者habib ul haq
相关产品推荐
相关产品推荐

