我做了个小工具,监视远程机器的系统服务状态,我在局域网中一切正常,但是改在公网状态时就不可以,机器是在内网,将IP映射到了路由器上,所有端口打开
结果总是提示:exp = {"RPC 服务器不可用。 (异常来自 HRESULT:0x800706BA)"}
我打开了服务器的rpc服务,tcp/ip netbios,dhcp client,dcom等,机器也重起过,就是不行.
后来找了一台在IDC的机器测试,结果还是一样,请高人指点!
连接远程服务器的代码如下:
public static bool RemoteConnectValidate(string host, string userName, string password)
        {
            ConnectionOptions connectionOptions = new ConnectionOptions();
            connectionOptions.Username = userName;
            connectionOptions.Password = password;
            ManagementScope managementScope = new ManagementScope("\\\\" + host + "\\root\\cimv2", connectionOptions);
            try
            {
                managementScope.Connect();
            }
            catch(Exception exp)
            {            }
            return managementScope.IsConnected;
        }

解决方案 »

  1.   

    先试能否PING通host先。另外访问外网的服务器时,一般要经过多重防火墙,
    只打开服务器的端口是不够的,每个经过的防火墙的端口均需开放,
    这在公网上基本上是不可能的。
      

  2.   

    如果是Local 网的话,自然可以直接访问,如果要访问外网的,就要有第三方的类似域名解析的程序放到服务端。
      

  3.   

    在服务器上,我能想到需要开的,我都已经打开
    在路由器上,需要打开的,我也都打开了,针对它的防火墙我也全部都已经关闭另外如果说是因为路由的机器,所以不可以,但是为什么IDC里的机器也不行呢?
    IDC那台机器是透明的网络环境,未做任何限制,且只有一个公网地址
    望高人指点
      

  4.   

    楼主出现问题原因可能有下面几个,挨个排查一下
    1.被防火墙阻断
    2.主机名或IP地址错误
    3."TCP/IP NetBIOS Helper"服务没有运行
    4."Remote Procedure Call (RPC)"服务没有运行
    5."Windows Management Instrumentation"服务没有运行别的我也想不出了
      

  5.   

    wmi 需要 rpc服务,135端口、dcom权限之类的,
    如果服务器是你可以控制的,不如写一个windows服务程序放在服务器端用tcp监听查询指令然后返回要查询的本地系统的服务状态,只要监听端口不被屏蔽,保证不会出问题,也不需要用户凭证,也就是帐号信息
      

  6.   

    我来推荐一个java视频课程在线试听:http://www.cdlanhai.com/zxst/
      

  7.   


    这些服务我已经全开了,DCOM权限已经给everyone所有权限了,结果还是不行
    我现在的做法是在服务端放了个控制台,然后客户端发命令过去再返回
    虽然感觉不一样,但是效果是一样了...