C# 实现获取本机信息接口,并提供web端调用
时间: 2024-09-15 20:04:22 浏览: 35
C#职场最精髓Webapi实例(Demo含源码,前后端分离,终身受益).rar
5星 · 资源好评率100%
在C#中,可以创建一个Web API来获取本机的一些基本信息,如操作系统、硬件配置等。以下是一个简单的示例,展示如何使用.NET Core创建这样的API:
首先,安装必要的依赖项:
```sh
dotnet add package Microsoft.AspNetCore.Mvc.NewtonsoftJson // 用于支持JSON序列化
```
然后,在`Startup.cs`文件中设置启动内容:
```csharp
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers(); // 添加Mvc支持
services.AddJsonSerializerOptions(options => options.JsonSerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore); // 解决循环引用问题
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers(); // 映射所有控制器到"/api"路径
});
}
```
接下来,创建一个名为`MachineInfoController`的控制器,用于处理GET请求获取本机信息:
```csharp
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using System.Management; // 引入Windows Management Instrumentation (WMI) 功能
[ApiController]
[Route("[controller]")]
public class MachineInfoController : ControllerBase
{
[HttpGet]
public IActionResult GetMachineInfo()
{
try
{
var wmi = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
ManagementObject os = wmi.Get().FirstOrDefault();
var result = new
{
OsName = os.Properties["Caption"].Value.ToString(),
Version = os.Properties["Version"].Value.ToString(),
Manufacturer = os.Properties["Manufacturer"].Value.ToString(),
CpuCount = Environment.ProcessorCount,
TotalMemoryMB = Environment.WorkingSet64 / (1024 * 1024),
HardwareModels = GetHardwareModels() // 如果需要获取更多硬件信息,可以添加这个方法
};
return Ok(result);
}
catch (Exception ex)
{
return StatusCode((int)HttpStatusCode.InternalServerError, "Failed to get machine info: " + ex.Message);
}
}
private string[] GetHardwareModels()
{
// 这里可以根据实际需求从WMI或其他方式获取硬件型号,此处略去具体实现
}
}
```
现在,你可以通过访问 `http://your-server/api/machineinfo` 来调用这个接口。注意替换`your-server`为你服务器的实际地址。
阅读全文