12

我有一个运行 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);
    }

“/”应用程序中的服务器错误。

RPC 服务器不可用。(来自 HRESULT 的异常:0x800706BA)

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

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

源错误:

Line 64: Line 65: //获取结果 Line 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) in 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

4

5 回答 5

4

如果发生错误The RPC server is unavailable. (Exception from HRESULT: 0x800706BA),则可能发生

  • 由于防火墙限制,入站 RPC / WMI 连接在目标计算机上被阻止

    或者

  • 只是因为您输入了错误的目标机器的主机名/IP 地址。

该错误发生任何身份验证和/或授权操作之前,因此在此步骤不需要处理权限。事实上,如果用户帐户缺乏对特定命名空间的必要权限,您会收到另一个错误和错误代码:access denied. (0x80041003)

MSDN 文章介绍了为远程 WMI 访问添加防火墙例外:“远程连接到 WMI”

于 2013-11-20T13:37:54.750 回答
3

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

于 2012-10-28T04:53:27.863 回答
0

此外,您需要在远程计算机上的 Windows 防火墙中启用 Windows Management Instrumentation (WMI) 规则。

1]打开Windows防火墙。
2]单击允许应用程序或功能通过Windows防火墙。
3]启用Windows Management Instrumentation(WMI)的权限。

于 2014-12-12T06:14:43.367 回答
0

只需转到 IIS 管理器。在应用程序池中启动您的网站服务。这个对我有用

于 2014-07-01T12:19:20.883 回答
-1

我面临同样的问题。早些时候,我在使用服务器 IP 时遇到此错误,但在使用服务器 FQDN 名称后能够连接。故障排除后,我发现我的 DNS PTR 记录不正确。修复后,我还能够将 WMI 与 IP 地址连接起来。我使用了 wbemtest WMI 测试工具。

于 2017-03-14T08:45:43.660 回答