如何检查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
相关产品推荐
相关产品推荐

