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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:20:27