如何解决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();
}
}
解决方法
好的,我有解决方案:
在计算机管理>系统工具>本地用户和组>组中。
然后,我点击“Perfomance Monitor Users”组,并添加 IIS Apppool\MYAPPPOOL
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。