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

如何解决ASP.NET Core 6部署到IIS时的HTTP Error 403.14 - Forbidden错误

解决ASP.NET Core 6 MVC发布到IIS的403.14及进程启动失败问题

一、修正HTTP Error 403.14 - Forbidden错误

403.14本质是IIS未正确将请求转发给ASP.NET Core模块,不要手动编写web.config,正确操作是:

  • 发布项目时选择文件系统作为目标,确保勾选「生成web.config」选项(VS默认已勾选)。自动生成的配置会包含适配IIS的AspNetCoreModuleV2设置,以及明确指向应用dll的路径,而非开发环境专用的变量。
  • 若已手动添加web.config,先删除该文件,重新发布生成默认配置。

二、解决进程启动失败与端口绑定问题

事件查看器的错误核心是%LAUNCHER_PATH%和%LAUNCHER_ARGS%仅适用于VS开发环境,IIS无法识别这两个变量,导致进程找不到启动入口,端口绑定失败是衍生问题。按以下步骤修复:

  1. 修正web.config配置:如果必须手动维护配置,替换变量为实际启动参数,示例如下(将YourMvcApp.dll替换为你项目的dll名称):
<configuration>
    <system.webServer>
        <handlers>
            <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
        </handlers>
        <aspNetCore processPath="dotnet" arguments=".\YourMvcApp.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
</configuration>
  1. 检查服务器依赖:确保服务器安装了与.NET 6匹配的ASP.NET Core Runtime和AspNetCoreModuleV2。可通过命令dotnet --list-runtimes查看已安装版本,若缺失,安装对应版本的托管捆绑包(Hosting Bundle),它会自动配置IIS模块。
  2. 调整应用程序池设置:
    • 将应用程序池的**.NET CLR版本**设为「无托管代码」(ASP.NET Core为自托管模式,无需IIS托管运行时)。
    • 确保应用程序池身份拥有发布目录(D:\publish)的读写权限,尤其是日志目录(若开启了stdoutLogEnabled)。可临时将身份改为LocalSystem测试(生产环境不建议),或给对应身份添加目录权限。
  3. 验证端口问题:若进程能正常启动后仍提示端口占用,用命令netstat -ano | findstr :44162查看占用端口的进程,结束进程或调整应用端口配置(ASP.NET Core在IIS下默认通过反向代理处理,一般无需手动指定端口)。

三、额外排查手段

  • 开启标准输出日志:将web.config中stdoutLogEnabled设为true,确保logs目录存在且有写入权限,启动应用后查看日志文件,可获取进程启动失败的具体原因(如dll缺失、配置文件错误等)。
  • 直接启动测试:在服务器命令行进入D:\publish目录,执行dotnet YourMvcApp.dll,若启动失败,命令行会直接输出错误信息,针对性修复即可。

内容的提问来源于stack exchange,提问作者R.S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:30:04