# ASP.NET Core 上 IIS：Hosting Bundle、ANCM 与 500.30

> 安装 ASP.NET Core Hosting Bundle，发布应用，应用池设为 No Managed Code，并靠 stdout 日志定位 500.30/502.5。

**测试环境**

- 版本号: 26100.33650
- 版本: Standard / Datacenter
- 架构: x64
- 证据: E1
- 核验日期: 2026-10-29

## 一句话结论

1. 装 **ASP.NET Core Hosting Bundle**（含 runtime + ANCM）。
2. 发布应用（`dotnet publish -c Release`）。
3. IIS 站点指向 publish 目录。
4. 应用池设 **No Managed Code**。
5. 500.30 先读应用 stdout 日志，不要重装 IIS。

## 安装

下载与应用主版本匹配的 Hosting Bundle，安装后：

```powershell
dotnet --list-runtimes
Get-WebGlobalModule -Name AspNetCoreModuleV2
```

必须有 `AspNetCoreModuleV2`。没有就修复 Hosting Bundle 并重启 IIS。

## 发布

```powershell
dotnet publish C:\src\app\App.csproj -c Release -o C:\sites\app
```

publish 输出含 ANCM handler 的 `web.config`。除非懂 schema，不要手写。

## IIS 站点

- 物理路径：`C:\sites\app`
- 应用池：新建，**No Managed Code**
- 绑定：HTTPS + 正确证书
- 身份：应用池身份对 publish 目录读/执行

## in-process 与 out-of-process

```xml
<aspNetCore processPath="dotnet" arguments=".\App.dll"
            hostingModel="inprocess" />
```

- **in-process**：应用跑在 `w3wp.exe` 内，更快，现代模板默认。
- **out-of-process**：ANCM 启动 `dotnet App.dll`；能看到独立进程，开销略大。

选一个；不要在不同环境混用 `hostingModel` 而不测试。

## 500.30 / 502.5

`500.30` 是应用启动失败。在 `web.config` 开 stdout：

```xml
<aspNetCore processPath="dotnet" arguments=".\App.dll"
            stdoutLogEnabled="true"
            stdoutLogFile=".\logs\stdout" />
```

读 `logs\stdout_*.log`。常见：

- 缺 runtime 版本；
- `arguments` 路径错；
- 启动时抛异常（配置/DB/证书）；
- 应用池身份读不了目录或写不了日志；
- 端口/URL 绑定冲突。

`502.5` 同族：ANCM 起不来进程。

> **警告: 应用池不要设 v4.0**
>
> ASP.NET Core 不是 .NET Framework。池必须是 **No Managed Code**；运行时来自 Hosting Bundle/ANCM。

## 验证

```powershell
Invoke-WebRequest https://app.example/ -UseBasicParsing | Select-Object StatusCode
Get-Content C:\sites\app\logs\stdout_*.log -Tail 50
Get-IISAppPool | Where-Object Name -eq 'apppool'
```

看响应、stdout 日志和池身份。不要靠盲目回收调试。

## 实验室边界

E1。实验室没有装 Hosting Bundle 或部署 ASP.NET Core 应用；步骤是 Server 2025 的生产检查表。

## 来源

- [Microsoft Learn — 在 IIS 上托管 ASP.NET Core](https://learn.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/)
- [Microsoft Learn — ASP.NET Core Module](https://learn.microsoft.com/zh-cn/aspnet/core/host-and-deploy/aspnet-core-module)
- [Microsoft Learn — Hosting Bundle](https://learn.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/hosting-bundle)

---

来源页面: https://winbook.fyi/zh/server/runtimes/aspnet-core/
