eShopOnWeb ASP.NET Core应用Kestrel可运行但IIS部署失败求助
解决eShopOnWeb部署到IIS出现HTTP 403.14错误的方案
检查ASP.NET Core托管捆绑包是否安装
Windows Server 2019上必须安装对应.NET 6版本的ASP.NET Core Hosting Bundle,它包含IIS托管ASP.NET Core应用所需的核心模块。打开控制面板→程序和功能,确认存在“ASP.NET Core 6.0 Runtime (v6.x.x) - Windows Hosting Bundle”条目;若未安装,部署对应版本后执行命令iisreset重启IIS。修正应用程序池配置
- 打开IIS管理器,找到站点对应的应用程序池,进入“高级设置”,将**.NET CLR版本设置为无托管代码**(ASP.NET Core为自托管模式,无需IIS托管代码),管道模式保持“集成”。
- 给应用程序池身份(通常为
IIS AppPool\[你的池名称])添加部署目录的读取和执行权限,避免因权限不足导致应用无法加载。
确认站点物理路径与应用程序设置
- 站点的物理路径必须指向发布后的根目录(包含
web.config的目录),而非wwwroot子目录。若指向wwwroot,IIS无法识别ASP.NET Core应用配置,会当作静态文件目录处理。 - 右键站点→选择“转换为应用程序”,关联正确的应用程序池,确保站点被识别为ASP.NET Core应用而非普通虚拟目录。
- 站点的物理路径必须指向发布后的根目录(包含
验证web.config配置正确性
发布生成的web.config需包含ASP.NET Core托管模块的正确配置,示例如下:<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\eShopOnWeb.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> </system.webServer> </location> </configuration>- 确认
processPath和arguments指向正确的应用程序集文件(eShopOnWeb.dll)。 - 可临时将
stdoutLogEnabled设为true,查看部署目录下logs文件夹中的日志,排查应用启动失败的具体原因。
- 确认
检查服务器上的.NET 6运行时
在服务器命令行执行dotnet --list-runtimes,确认存在Microsoft.AspNetCore.App 6.x版本的运行时。若缺失,安装对应版本的ASP.NET Core Runtime。验证IIS模块映射与请求筛选
在IIS管理器的站点→“处理程序映射”中,确认存在名为aspNetCore的条目,模块为AspNetCoreModuleV2。同时检查请求筛选规则,确保未阻止所有HTTP请求。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

