Hardware.Info本地开发运行没问题,放到服务器上抛异常


利用Hardware.info获取设备硬件信息:

C# 全选
var hardwareInfo = new HardwareInfo();
hardwareInfo.RefreshAll(); // 刷新所有设备信息
MachineInfo info = new MachineInfo()
{
   // CPU信息
   CpuList = hardwareInfo.CpuList.Select(s => new MachineInfo.CPUInfo()
   {
	   Name = s.Name,
	   NumberOfCores = s.NumberOfCores,
	   NumberOfLogicalProcessors = s.NumberOfLogicalProcessors
   }).ToList(),

   // 内存信息
   Memory = new MachineInfo.MemoryInfo()
   {
	   TotalPhysical = hardwareInfo.MemoryStatus.TotalPhysical,
	   MemoryList = hardwareInfo.MemoryList.Select(s => new MachineInfo.MemoryItem()
	   {
		   Capacity = s.Capacity,
		   FormFactor = s.FormFactor.ToString(),
		   Manufacturer = s.Manufacturer,
		   PartNumber = s.PartNumber,
		   SerialNumber = s.SerialNumber,
		   Speed = s.Speed
	   }).ToList()
   },

   // 主板信息
   MotherboardList = hardwareInfo.MotherboardList.Select(s => new MachineInfo.MotherboardInfo()
   {
	   Manufacturer = s.Manufacturer,
	   Product = s.Product,
	   SerialNumber = s.SerialNumber
   }).ToList(),

   // 网卡信息
   NetworkAdapterList = hardwareInfo.NetworkAdapterList.Select(s => new MachineInfo.NetworkInfo()
   {
	   ProductName = s.ProductName,
	   MACAddress = s.MACAddress
   }).ToList(),

   // 系统信息
   OperatingSystem = new MachineInfo.OSInfo()
   {
	   Name = hardwareInfo.OperatingSystem.Name,
	   VersionString = hardwareInfo.OperatingSystem.VersionString
   }
};

本地运行没问题,但是在服务器上运行,就会抛异常,抓取异常信息如下:

Exception:【异常类型】:ManagementException
【异常信息】:无效查询
【堆栈调用】:   at System.Management.ManagementException.ThrowWithExtendedInfo(Managem
entStatus errorCode)
   at System.Management.ManagementObjectCollection.ManagementObjectEnumerator.Mo
veNext()
   at Hardware.Info.Windows.HardwareInfoRetrieval.GetMonitorList()
   at Hardware.Info.HardwareInfo.RefreshMonitorList()
   at Hardware.Info.HardwareInfo.RefreshAll()
   at JOCAPI.Core.Lic.MachineCode.GetMachineCodeString()
   at JOCAPI.Core.Extensions.Extention.GA7k6XjmWOgrNvQ7HFN()
   at JOCAPI.Core.Extensions.Extention.ValidateLic(IConfiguration configuration)
 
【异常方法】:Void ThrowWithExtendedInfo(System.Management.ManagementStatus)

原因分析

猜测是服务器通过远程桌面管理的,并没有连接显示器。所以在调用HardwareInfoRefreshMonitorList方法时候发生异常了

解决方案

慎用HardwareInfoRefreshAll方法

改为只刷新自己需要获取设备信息的方法

代码修改为:程序正常运行

C# 全选
var hardwareInfo = new HardwareInfo();
//hardwareInfo.RefreshAll(); // 必须要这一行代码,不然不会更新,服务器没有显示器,会抛异常
hardwareInfo.RefreshCPUList(); // CPU 
hardwareInfo.RefreshMemoryStatus(); // 内存状态
hardwareInfo.RefreshMemoryList(); // 内存列表
hardwareInfo.RefreshMotherboardList(); // 主板
hardwareInfo.RefreshNetworkAdapterList(); // 网卡
hardwareInfo.RefreshOperatingSystem(); // 系统
hardwareInfo.RefreshDriveList(); // 硬盘

 

 

 

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:vue-plugin-hiprint
下一篇:如何在 Entity Framework 中自动截断超长字符串并避免异常
评论列表

发表评论

评论内容
昵称:
关联文章

Hardware.Info本地开发运行问题服务器异常
WPF开发随笔收录-本地日志LogUtil类
C#错误异常日志记录文件
.net Core项目 IIS部署运行异常信息输出
VS调试运行ASP.NET MVC项目,传静态资源图片404问题,Debug路径
Python使用html解析包Requests-html运行py文件问题,Pyinstaller打包exe后运行报错
记一次本地正常线接口报404
mysql服务器运行环境要求
.NET中大型项目开发必备(10)--图片的裁剪、缩、与加水印
网站迁移纪实:从Web Form Asp.Net Core (Abp vNext 自定义开发
使用.NET 6开发TodoList应用(8)——实现全局异常处理
服务器ntlmssp攻击防御措施,windows server大量审核失败问题
未在本地计算机注册"Microsoft.ACE.OLEDB.12.0"提供程序
git版本回退后推送服务器
Python使用UUID模块云服务器获取MAC地址,重启后就不一样了
CMD运行命令程序自动暂停问题解决
Python windows服务报错: 1063 StartServiceCtrlDispatcher 服务进程无法连接服务控制器
一劳永逸,解决.NET发布云服务器的时区问题
C#常见异常列表
selenium爬虫被检测 该如何破

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码