iis - IIS:从 Web api 应用程序获取系统 CPU 使用率
问题描述
我必须创建一个小服务,以显示机器的健康状态(Windwos 服务)。
我创建了一个非常小而简单的 aspnet 应用程序,它返回这些数据。当我从命令行运行应用程序(使用 dotnet
命令)时它工作正常,但是当我将它作为 IIS 站点运行时,该cpu
方法不返回任何值。
感谢您的帮助,并为我糟糕的英语感到抱歉。
这是代码:
[ApiController]
[Route("[controller]")]
[Route("/")]
public sealed class SystemHealthController : ControllerBase
{
[HttpGet("cpu")]
public async Task<ActionResult<string>> GetCpu()
=> await WmicMetricsClient.Cpu().ConfigureAwait(false);
[HttpGet("memory")]
public async Task<ActionResult<string>> GetMemory()
=> await WmicMetricsClient.Memory();
}
public static class WmicMetricsClient
{
public static async Task<string> Memory()
{
var output = await GetCommandLineOutputAsync(
fileName: "wmic",
arguments: "OS get FreePhysicalMemory,TotalVisibleMemorySize /Value");
return output;
}
public static async Task<string> Cpu()
{
var output = await GetCommandLineOutputAsync(
fileName: "wmic",
arguments: "cpu get loadpercentage /Value");
return output;
}
private static async Task<string> GetCommandLineOutputAsync(string fileName, string arguments)
{
var info = new ProcessStartInfo
{
FileName = fileName,
Arguments = arguments,
RedirectStandardOutput = true
};
using var process = Process.Start(info);
return await process.StandardOutput.ReadToEndAsync();
}
}
解决方案
好的,我有解决方案:
在计算机管理>系统工具>本地用户和组>组中。
然后,我单击“性能监视器用户”组,然后添加 IIS Apppool\MYAPPPOOL
。
推荐阅读
- flutter - 在 Flutter 中有没有办法切换谷歌地图上标记的可见性?
- jquery - 链接到页面然后打开 JQuery 选项卡
- django - 如何将具有初始值的新字段添加到 django 查询集结果?
- javascript - 将逗号分隔的字符串转换为逗号分隔的数字
- javascript - 导入对象并在数组中使用它会使第一项未定义?
- apache-spark - Sparkdl 故障排除 Py4JJavaError: 调用 o99.collectToPython 时出错
- jquery - 添加 jquery 生成的
用于围绕两个 jquery 生成的 div 的容器 - javascript - 将 package.json 更改为 node_modules 中的内容
- javascript - React Spring:与 react-router 一起使用时 useTransition() 中的动态值
- python - Pandas:将各种类似的子字符串映射到单一的标准格式