使用WMI查询"RPC服务器不可用"

jwy*_*een 12 c# asp.net wmi rpc wmi-query

我有一个运行Server 2008 R2的Web服务器工作组,我正在尝试管理一个检查所有磁盘空间的脚本.我几个月前在设置服务器时设置了这个,我相信它工作正常.现在我去检查并且它发出错误说"RPC服务器不可用".该脚本是一个C#ASP.NET页面,虽然我在PowerShell中尝试过类似的调用但它也会出现同样的错误.该脚本可以正常访问本地计算机的信息,但无法访问远程服务器信息.

我花了最后几个小时挖掘我能找到的一切,但没有任何作用.我已经为WMI(远程和本地),DCOM(远程和本地)以及我正在访问的计算机的整个驱动器设置了权限.我使用了计算机名称,IP地址,完整的计算机名称(xxx.echomountain.com),并尝试在ConnectionOptions对象上进行多次模拟和身份验证设置.

我知道我使用的用户名/密码是正确的,因为我可以访问另一个的分片目录

我可以检查哪些可能导致此错误的任何想法?

ConnectionOptions oConn = new ConnectionOptions();
    oConn.Impersonation = ImpersonationLevel.Impersonate;
    oConn.EnablePrivileges = true;
    oConn.Username = username;
    oConn.Password = password;
    //oConn.Authentication = AuthenticationLevel.PacketPrivacy;
    string strNameSpace = @"\\";

    if (srvname != "")
        strNameSpace += srvname + ".echomountain.com";
    else
        strNameSpace += ".";

    strNameSpace += @"\root\cimv2";

    ManagementScope oMs = new ManagementScope(strNameSpace, oConn);

    //get Fixed disk state
    ObjectQuery oQuery = new ObjectQuery("select FreeSpace,Size,Name from Win32_LogicalDisk where DriveType=3");

    //Execute the query
    ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oMs, oQuery);

    //Get the results
    ManagementObjectCollection oReturnCollection = oSearcher.Get();

    //loop through found drives and write out info
    double D_Freespace = 0;
    double D_Totalspace = 0;
    foreach (ManagementObject oReturn in oReturnCollection)
    {
        // Disk name
        //MessageBox.Show("Name : " + oReturn["Name"].ToString());
        // Free Space in bytes
        string strFreespace = oReturn["FreeSpace"].ToString();
        D_Freespace = D_Freespace + System.Convert.ToDouble(strFreespace);
        // Size in bytes
        string strTotalspace = oReturn["Size"].ToString();
        D_Totalspace = D_Totalspace + System.Convert.ToDouble(strTotalspace);
        boxSize = (D_Totalspace / GB).ToString("##.00");
        boxFree = (D_Freespace / GB).ToString("##.00");
        Response.Write(srvname + ":" + boxSize + ":" + boxFree);
    }
Run Code Online (Sandbox Code Playgroud)

'/'应用程序中的服务器错误.

RPC服务器不可用.(HRESULT异常:0x800706BA)

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.Runtime.InteropServices.COMException:RPC服务器不可用.(HRESULT异常:0x800706BA)

来源错误:

第64行:第65行://获取结果第66行:ManagementObjectCollection oReturnCollection = oSearcher.Get(); 第67行:第68行://遍历找到的驱动器并写出信息

源文件:c:\ Web\medelaimages.com\iis\tool\boxinfoagent.aspx行:66

堆栈跟踪:

[COMException(0x800706ba):RPC服务器不可用.(来自HRESULT的异常:0x800706BA)] System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode,IntPtr errorInfo)+0 System.Management.ManagementScope.InitializeGuts(Object o)+674 System.Management.ManagementScope.Initialize()+ 347 System.Management.ManagementObjectSearcher.Initialize()+ 189 System.Management.ManagementObjectSearcher.Get()+ 54 ASP.tool_boxinfoagent_aspx.Page_Load(Object sender,EventArgs e)位于c:\ Web\medelaimages.com\iis\tool\boxinfoagent中. aspx:66 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e)+25 System.Web.UI.Control.LoadRecursive()+71 System.Web.UI.Page.ProcessRequestMain( Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+3048

版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.1

Liz*_*izz 3

该错误消息告诉您 RPC 被阻止,这是 Windows 7 和 2008 上的默认策略设置。可以通过策略打开它,或者使用 WMI 连接和管理主机。在内部可信网络上,通常会启用 RPC。美国政府计算机安全政策委员会(如创建 FDCC 和 USGCB 的委员会)没有推荐RPC 设置,因此启用它是可以的。通过 WMI 管理实时系统非常困难,因为您无法查看远程主机的注册表、计划任务、文件夹和文件。但是,您可以通过 WMI 轻松管理服务。