IIS:从web api应用程序获取系统CPU使用率

IIS:从web api应用程序获取系统CPU使用率,iis,wmi,cpu-usage,wmic,Iis,Wmi,Cpu Usage,Wmic,我必须创建一个小服务,以显示机器的运行状况(Windwos服务) 我创建了一个非常小而简单的aspnet应用程序,它返回这些数据。 当我从命令行(使用dotnet命令)运行应用程序时,它工作正常,但当我将其作为IIS站点运行时,cpu方法不会返回任何值 谢谢你的帮助,很抱歉我的英语不好 代码如下: [ApiController] [路线(“[控制器]”)] [路线(“/”)] 公共密封类SystemHealthController:ControllerBase { [HttpGet(“cpu”)

我必须创建一个小服务,以显示机器的运行状况(Windwos服务)

我创建了一个非常小而简单的aspnet应用程序,它返回这些数据。 当我从命令行(使用
dotnet
命令)运行应用程序时,它工作正常,但当我将其作为IIS站点运行时,
cpu
方法不会返回任何值

谢谢你的帮助,很抱歉我的英语不好

代码如下:

[ApiController]
[路线(“[控制器]”)]
[路线(“/”)]
公共密封类SystemHealthController:ControllerBase
{
[HttpGet(“cpu”)]
公共异步任务GetCpu()
=>wait wmicmetricclient.Cpu().configurewait(false);
[HttpGet(“内存”)]
公共异步任务GetMemory()
=>等待wmicmetricclient.Memory();
}
公共静态类WMICMetricClient
{
公共静态异步任务内存()
{
变量输出=等待GetCommandLineOutputAsync(
文件名:“wmic”,
参数:“OS获取FreePhysicalMemory,TotalVisibleMemorySize/Value”);
返回输出;
}
公共静态异步任务Cpu()
{
变量输出=等待GetCommandLineOutputAsync(
文件名:“wmic”,
参数:“cpu获取加载百分比/值”);
返回输出;
}
专用静态异步任务GetCommandLineOutputAsync(字符串文件名、字符串参数)
{
var info=新流程StartInfo
{
FileName=FileName,
参数=参数,
重定向标准输出=真
};
使用var process=process.Start(info);
return wait process.StandardOutput.ReadToEndAsync();
}
}

好的,我有一个解决方案:

在计算机管理>系统工具>本地使用SR和组>组中


然后,我单击“性能监视用户”组,添加IIS
Apppool\MYAPPPOOL

,您可以参考:像
wmic
这样的命令很可能需要某些权限,在IIS上运行的web应用可能不满足这些要求。@Theobaldu,它非常非常旧,.NET 1,我将尝试它,但是我需要一个.net核心的解决方案。