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

如何检查IIS中站点的托管模型?确认配置修改是否正确

验证ASP.NET Core托管模型配置及查看IIS站点托管模型的方法

一、验证web.config的托管模型修改是否生效

1. 直接检查web.config配置

打开项目的web.config文件,找到<aspNetCore>节点,确认hostingModel属性值为InProcess:

<aspNetCore processPath="dotnet" arguments=".\YourApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />

如果该属性存在且值为InProcess,说明配置本身已修改正确,接下来可以验证是否实际生效。

2. 检查应用运行进程

  • InProcess模式:应用会寄宿在IIS的工作进程w3wp.exe中,不会单独启动dotnet.exe进程。
  • OutOfProcess模式:应用会启动独立的dotnet.exe进程。

验证方式:

  • 启动应用后,打开任务管理器切换到“详细信息”标签:如果看不到单独的dotnet.exe进程(仅存在w3wp.exe),说明是InProcess模式;
  • 也可以用命令行查看:执行tasklist | findstr "dotnet",如果没有结果,说明当前是InProcess模式;
  • 对于.NET Core 3.0及以上版本,执行dotnet --list-processes,如果列表中没有你的应用进程,说明是InProcess模式。

3. 查看应用启动日志

  • 打开Windows事件查看器,依次展开“Windows日志”→“应用程序”,查找来源为ASP.NET Core的事件,其中会包含托管模型的启动信息,比如Using inprocess hosting model;
  • 如果开启了stdout日志,查看web.config中stdoutLogFile指定路径下的日志文件,也能找到托管模型的相关记录。

4. 代码验证进程一致性

在应用的某个接口或页面中添加代码,输出当前进程ID:

using System.Diagnostics;

// 在Controller方法中
public IActionResult CheckProcessId()
{
    var currentProcessId = Process.GetCurrentProcess().Id;
    return Ok($"当前进程ID:{currentProcessId}");
}

访问该接口获取进程ID,然后在任务管理器中找到w3wp.exe的进程ID,如果两者一致,说明应用确实运行在IIS工作进程中,即InProcess模式生效。

二、查看IIS中各站点的托管模型

1. 通过IIS管理器图形界面

  • 打开IIS管理器,选中目标站点;
  • 在右侧“功能视图”中找到并双击“配置编辑器”;
  • 在配置编辑器的“节”下拉菜单中选择system.webServer/aspNetCore,右侧即可看到hostingModel的当前值;
  • 若要批量查看多个站点,可在服务器级别打开配置编辑器,然后在“站点”下拉菜单中逐个选择站点查看对应配置。

2. 通过appcmd命令行工具

以管理员身份打开命令提示符,进入C:\Windows\System32\inetsrv目录,执行以下命令:

  • 查看单个站点:
appcmd list config "你的站点名称" /section:aspNetCore

输出结果中会包含hostingModel字段及其值。

  • 批量查看所有站点:
for /f "tokens=2 delims=:" %i in ('appcmd list sites') do appcmd list config %i /section:aspNetCore

(注:如果在批处理脚本中执行,需将%i改为%%i)

内容的提问来源于stack exchange,提问作者sommmen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 07:40:10