本地发布 asp.netcore3.1 -- HTTP Error 500.30 - ANCM In-Process Start Failure

本文介绍了在win10环境下,IIS 10托管的netcore3.1应用遇到HTTP Error 500.30错误的解决过程。作者通过检查文件夹权限、添加Startup日志记录、分析日志插件(log4net)配置,最终发现并解决了appsettings.json中多余的日志配置,成功启动应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境

  • win10
  • IIS 10
  • netcore3.1
  • VS2019

问题描述

在这里插入图片描述

解决思路

  • 其他常见的解决方案
    HTTP Error 500.30 - ANCM In-Process Start Failure 解决方法
  • 但是可惜的是他们的方案没有解决我的问题,下面简单介绍下我的解决思路。
    • 判断文件夹权限
    • 给Startup添加日志,用于记录执行到那一步运行失败
      • 构造函数执行正常
      • ConfigureServices函数执行正常
      • 未进入Configure
      • 那么意味着添加服务是成功,而启动这些服务失败,
    • 那么可以确定的是:这是程序的启动失败。一般这种问题,会将失败信息记录在系统日志内。
      • 打开时间查看器
      • 打开 window日志->应用程序
      • 查看是否由错误的消息(我这个有的)
<think>我们正在处理一个关于在IIS上托管.NET9 API时遇到的HTTP错误500.30ASP.NETCore应用程序启动失败)的问题。根据引用内容,我们可以得到一些线索:引用[1]提到将web.config文件中的hostingModel="inprocess"改为"OutOfProcess"或删除该属性。引用[2]提到检查是否安装了.NET6环境,并查看事件日志以及给Everyone用户授权。注意:用户的问题是关于.NET9 API,而引用中提到了.NET6。我们需要考虑.NET9的类似情况,因为.NET9是最新的,可能环境配置类似。步骤:1.检查web.config文件:在IIS中托管ASP.NET Core应用时,web.config文件中的hostingModel设置很重要。如果设置为"InProcess"(进程内托管),但环境配置不正确,可能导致启动失败。可以尝试改为"OutOfProcess"(进程外托管)。2.检查运行时环境:确保服务器上已经安装了.NET9运行时(或更高版本,具体取决于项目目标框架)。如果没有安装,需要下载并安装。3.检查事件日志:在Windows事件查看器的应用程序日志中查找详细错误信息,这有助于定位问题。4.权限问题:确保应用程序池的标识用户(或Everyone,但更推荐使用应用程序池标识)对发布文件夹有适当的读写权限。此外,可能还有其他原因,如缺少依赖项、端口冲突等,但上述步骤是常见解决方案。因此,我们将按照以下步骤为用户提供解决方案:</think>### 解决 IIS 托管 .NET 9 API 的 HTTP Error 500.30 问题 HTTP Error 500.30 表示 ASP.NET Core 应用程序在 IIS 中启动失败。以下是系统性的解决方案: #### 1. **修改托管模式** ```xml <!-- 修改 web.config 文件 --> <aspNetCore processPath="dotnet" arguments=".\YourApp.dll" hostingModel="OutOfProcess" <!-- 关键修改 --> stdoutLogEnabled="true" /> ``` - **原因**:`InProcess` 模式要求 IIS 与 .NET 运行时严格匹配,.NET 9 可能不兼容 - **操作**:将 `hostingModel` 改为 `OutOfProcess` 或直接删除该属性[^1] #### 2. **验证运行时环境** ```powershell # 检查已安装的运行时 dotnet --list-runtimes ``` - 确保服务器安装 **.NET 9 运行时** - 下载地址:[.NET 9 Runtime](https://dotnet.microsoft.com/download/dotnet/9.0) #### 3. **检查权限设置** - 在 IIS 中右键点击应用 → **编辑权限** → **安全** 选项卡 - 添加 `IIS_IUSRS` 和 `IUSR` 的完全控制权限 - 发布文件夹授予 `Everyone` 读取/执行权限(临时调试用)[^2] #### 4. **查看详细日志** - **事件查看器**:`Windows 日志 > 应用程序` 查找 .NET 错误事件 - **启用 stdout 日志**: ```xml <aspNetCore ... stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" /> ``` - 日志路径:应用根目录下的 `logs` 文件夹 #### 5. **其他关键检查** - **应用池配置**: - .NET CLR 版本设置为 **无托管代码** - 标识改为 **ApplicationPoolIdentity** - **端口冲突**:检查 `launchSettings.json` 与 IIS 绑定端口是否冲突 - **依赖缺失**:在服务器执行 `dotnet restore` #### 6. **部署验证** ```powershell # 在服务器手动测试应用 cd /d C:\inetpub\your-app dotnet YourApp.dll ``` - 若控制台运行成功,问题在 IIS 配置 - 若失败,检查项目依赖和运行时 > **注意**:.NET 9 是最新版本,需确保 IIS 模块 `AspNetCoreModuleV2` 已更新。可通过 [安装 Hosting Bundle](https://dotnet.microsoft.com/download/dotnet/9.0) 解决。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值