我有一个运行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)
来源错误:
第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 在c:\ Web \ medelaimages.com \ iis \ tool \ boxinfoagent.aspx中的ASP.tool_boxinfoagent_aspx.Page_Load(Object sender,EventArgs e):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
答案 0 :(得分:4)
如果
,可能会发生错误The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
由于防火墙限制
,目标计算机上的入站RPC / WMI连接被阻止或
只是因为您输入了目标计算机的错误主机名/ IP地址。
错误发生在之前任何身份验证和/或授权操作,因此在此步骤中不需要处理权限。实际上,如果用户帐户缺少对特定命名空间的必要权限,则会收到另一个错误和错误代码:access denied. (0x80041003)
。
MSDN文章介绍了为远程WMI访问添加防火墙例外:"Connecting to WMI Remotely"。
答案 1 :(得分:3)
错误消息告诉您RPC已被阻止,这是Windows 7和2008上的默认策略设置。可以通过策略打开它,也可以使用WMI连接和管理主机。在内部可信网络上,通常启用RPC。美国政府的计算机安全策略委员会,如创建FDCC和USGCB的计划安全策略委员会,建议使用 no 的RPC设置,因此可以启用它。由于无法查看远程主机的注册表,计划任务,文件夹和文件,因此通过WMI管理实时系统非常非常困难。但是,您可以通过WMI轻松管理服务。
答案 2 :(得分:0)
转到IIS管理器。在应用程序池中启动您的网站服务。 它对我有用
答案 3 :(得分:0)
此外,您需要在远程计算机上的Windows防火墙中启用Windows Management Instrumentation(WMI)规则。
1]打开Windows防火墙 2]单击允许应用程序或功能通过Windows防火墙 3]为Windows Management Instrumentation(WMI)启用权限。
答案 4 :(得分:-1)
我遇到了同样的问题。之前我在使用服务器IP时遇到此错误,但在使用服务器FQDN名称后能够连接。排除故障后,我发现我的DNS PTR记录不正确。修复后,我也能够连接WMI和IP地址。我使用了wbemtest WMI测试工具。