如何确认IIS上部署的.NET 6应用正使用.NET 6运行时?
如何确认IIS上部署的.NET应用正在使用.NET 6运行?
问题描述
我已在IIS上构建并部署了一个.NET 6(版本6.0.300)应用,该应用包含如下global.json文件:
{ "sdk": { "version": "6.0.300" } }
IIS应用池的.NET CLR版本配置为“No Managed Code”。系统中还安装了旧版本的.NET(3.1.421),执行dotnet --version命令显示版本为3.1.425,dotnet --info显示已安装的.NET运行时包括:
.NET runtimes installed: Microsoft.AspNetCore.App 3.1.31 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 6.0.20 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.NETCore.App 3.1.31 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 6.0.20 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.WindowsDesktop.App 3.1.31 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
如何确切确认该应用正使用.NET 6版本运行?
确认方法
在应用内添加版本查询接口
在ASP.NET Core应用中新增一个接口,直接返回当前运行的.NET版本信息,示例代码如下:[ApiController] [Route("api/runtime-version")] public class RuntimeVersionController : ControllerBase { [HttpGet] public IActionResult GetRuntimeInfo() { return Ok(new { DotNetRuntimeVersion = System.Environment.Version.ToString(), AspNetCoreVersion = typeof(Microsoft.AspNetCore.Mvc.ControllerBase).Assembly.GetName().Version.ToString() }); } }部署后访问该接口,即可直接看到应用实际使用的运行时版本。
查看应用进程的运行时路径
- 打开任务管理器,找到对应应用的
dotnet.exe进程(自包含部署则是你的应用主程序.exe); - 右键进程选择「打开文件所在位置」,定位到
dotnet.exe; - 右键该exe文件,选择「属性」-「详细信息」,查看产品版本,6.x开头的即为.NET 6运行时;
也可以用PowerShell快速查询:
Get-Process dotnet | Select-Object Id, Path, @{Name='DotNetVersion'; Expression={[System.Diagnostics.FileVersionInfo]::GetVersionInfo($_.Path).ProductVersion}}- 打开任务管理器,找到对应应用的
检查应用启动日志
.NET应用启动时会在日志中记录运行时版本信息,查看ASP.NET Core的应用日志(默认在Logs目录)或IIS站点日志,找到包含.NET Runtime或ASP.NET Core的启动条目,其中会明确标注使用的运行时版本。使用dotnet-trace工具追踪
- 安装工具:
dotnet tool install --global dotnet-trace - 获取应用进程ID(任务管理器中查看),执行追踪命令:
dotnet-trace collect --process-id <进程ID> --providers Microsoft-Windows-DotNETRuntime - 生成的
.nettrace文件可通过PerfView打开,在日志中能找到应用使用的.NET运行时版本。
- 安装工具:
内容的提问来源于stack exchange,提问作者Matt W
相关产品推荐
相关产品推荐

