当RPC服务器不可用时,在远程WMI上设置超时

 篱边_水祭 发布于 2022-12-28 15:36

我有以下代码检查远程计算机上的服务的状态.问题是,如果找不到远程计算机(它已关闭或其他东西),则该ManagementObjectSearcher.Get()方法需要20秒才能抛出"RPC服务器不可用"错误.在服务器不可用的情况下,我想明确声明我只希望它在短时间内尝试(例如3秒).我在这里发布了帖子,但它声明在ManagementObjectSearcher上使用Timeout选项,但我的代码似乎忽略了该值(因为它表明它与集合无关).我有什么东西可以忽略这些选项吗?我尝试过使用该ReturnImmediatly物业也无济于事.

public static void WmiServiceCheck()
    {
        try
        {
            var computerName = "SomeInvalidComputer";
            var serviceName = "Power";
            var managementScope = new ManagementScope(string.Format(@"\\{0}\root\cimv2", computerName));
            var objectQuery = new ObjectQuery(string.Format("SELECT * FROM Win32_Service WHERE Name = '{0}'", serviceName));
            var searcher = new ManagementObjectSearcher(managementScope, objectQuery);
            searcher.Options.Timeout = new TimeSpan(0, 0, 0, 3); // Timeout of 3 seconds
            var managementObjectCollection = searcher.Get();
            var serviceState = managementObjectCollection.Cast().ToList().Single()["State"].ToString();
            /// Other stuff here
        }
        catch (Exception ex)
        {
        }
    }

Hans Passant.. 8

是的,不是那个.您想要设置ConnectionOptions.Timeout:

  var managementScope = new ManagementScope(...);
  managementScope.Options.Timeout = TimeSpan.FromSeconds(3);

我测试时工作得很好.

请记住,3秒是在低端,服务器可能必须将大量代码交换到RAM中以处理请求,如果有一段时间没有查询.如果服务器以其他方式保留磁盘驱动器hoppin',则不一定是快速操作.如果您不介意偶尔的误报,请选择它.我个人从来没有在工作站上低于10秒,在Hard Knocks学校学习.服务器类机器20秒是安全的.

1 个回答
  • 是的,不是那个.您想要设置ConnectionOptions.Timeout:

      var managementScope = new ManagementScope(...);
      managementScope.Options.Timeout = TimeSpan.FromSeconds(3);
    

    我测试时工作得很好.

    请记住,3秒是在低端,服务器可能必须将大量代码交换到RAM中以处理请求,如果有一段时间没有查询.如果服务器以其他方式保留磁盘驱动器hoppin',则不一定是快速操作.如果您不介意偶尔的误报,请选择它.我个人从来没有在工作站上低于10秒,在Hard Knocks学校学习.服务器类机器20秒是安全的.

    2022-12-28 15:40 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有