- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 C# .Net MVC2 应用程序中,我们有一个简单的函数来获取处理器 ID 作为标识 Web 服务器的方案的一部分。相关部分是:
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("select ProcessorId from Win32_Processor"))
{
foreach (ManagementObject share in searcher.Get())
{
foreach (PropertyData PC in share.Properties)
{
return PC.Value.ToString();
}
}
}
它在开发和许多运行 cassini 和 IIS 的网络服务器上运行良好。但是,在 Server 2008 机器上的最新安装中,它在第一次调用以获取处理器 ID 时抛出内存不足异常。关于实现上述目标的可能原因或更好方法的任何建议。
非常感谢
编辑以包含堆栈跟踪:
System.Management.ManagementException: Out of memory
at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
at System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
at GIB.Helpers.SoftwarehouseLicenseAttribute.GetProcessorID() in C:\Users\Dog\Documents\Visual Studio 2010\Projects\GIB\GIB\Helpers\SoftwarehouseLicense.cs:line 177
at GIB.Helpers.SoftwarehouseLicenseAttribute.setup() in C:\Users\Dog\Documents\Visual Studio 2010\Projects\GIB\GIB\Helpers\SoftwarehouseLicense.cs:line 75
at GIB.Controllers.HomeController.Setup() in C:\Users\Dog\Documents\Visual Studio 2010\Projects\GIB\GIB\Controllers\HomeController.cs:line 37
at lambda_method(Closure , ControllerBase , Object[] )
at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<>c__DisplayClassf.<InvokeActionMethodWithFilters>b__c()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<>c__DisplayClassf.<InvokeActionMethodWithFilters>b__c()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
at System.Web.Mvc.Controller.ExecuteCore()
at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)
at System.Web.Mvc.MvcHandler.<>c__DisplayClass8.<BeginProcessRequest>b__4()
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0()
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
最佳答案
我刚刚遇到了类似的问题,试图查询 Win32_Service。我转到 Administrative Tools\Computer Management
下的 WMI 控制台。主屏幕显示 Win32_Process 内存不足错误。我最终重新启动了 WMI 服务(“Windows Management Instrumentation”)并解决了这个问题。
关于c# - ManagementObjectSearcher 内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4377810/
在 C# .Net MVC2 应用程序中,我们有一个简单的函数来获取处理器 ID 作为标识 Web 服务器的方案的一部分。相关部分是: using (ManagementObjectSearcher
我有一个重复运行的 .NET 6.0 代码来监控机器上的 CPU 并将统计信息发送到仪表板服务器: var stopwatch = Stopwatch.StartNew(); var processo
在尝试查找网络上的一组计算机时,我发现了 ManagementObjectSearcher 类以及 ManagementObject 类。 ManagementObjectSearcher 的构造函数
我正在尝试运行以下代码: ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_Proces
我有以下获取计划任务的代码,尽管我无法将它们输出到文本框中: private void button22_Click(object sender, EventArgs e) { var que
我有一个 WMI 查询,使用 ManagementObjectSearcher。 通常,这工作正常,但在某些机器上,它挂起/永远不会返回。我试过为查询设置超时,但似乎没有任何区别。 这是我的代码: u
这是我的一些有效代码: SelectQuery query = new SelectQuery("Win32_SystemDriver") { Condition = "Name = 'FTD
我找到了这个链接: Detect Antivirus on Windows using C# 但是,当我在 Visual C# Express Edition 2008 中尝试这段代码时,它说: Er
我在 WndProc 覆盖中使用以下函数: Public Function GetPortName() As String Dim portNameData As String Dim
我正在尝试使用 ManagmentObjectSearcher(CPU、GPU 等)从 PC 获取硬件信息。 很明显,这个类包含在 System.Management 中(如 MSDN 站点中所述)。
我尝试从 System.Management 命名空间获取一些系统信息,但任何尝试使用 ManagementObjectSearcher 或 ManagementObjectCollection 收集
我正在尝试使用 ManagementObjectSearcher 运行查询,这是我的代码:(net core 2.1) ManagementObjectSearcher searcher = new
好吧,这让我抓狂。 下面的代码在带有 .NET 3.5 的 Windows 7 中运行良好。在 Windows 8.1 和 .NET 4.5.1 中,我得到一个空结果,但使用 WMI Code Cre
我正在尝试使用这篇文章中的代码: get com port number of an USB adapter 然后我收到这条消息:为什么? 最佳答案 您必须通过 VS 2010 手动添加对 Syste
我只是想获得与任务管理器匹配的准确 CPU 使用率。到目前为止,我已经尝试了四种推荐的方法,但都不起作用。 首先,我尝试了我能找到的类似解决方案或建议。这里的代码示例使用了四种方法,均不准确。其次,我
我很想知道可以查询 ManagementObject 以读取硬件详细信息的各种类/表。 例如 ManagementObjectSearcher adapters = new ManagementObj
我正在尝试使用 ManagementObjectSearcher 确定我的 Kinect 是否已插入 PC。我不确定要查询什么,因为它没有列为 USB 设备。相反,它被列为“Microsoft Kin
我在项目中 .aspx 页面的代码隐藏文件中包含以下代码: Dim searcher As New ManagementObjectSearcher("SELECT RemoteName FROM w
我是一名优秀的程序员,十分优秀!