Tengo un grupo de trabajo de servidores web que ejecuta Server 2008 R2 en el que trato de administrar un script que comprueba el espacio en disco de todos ellos. Lo había configurado hace unos meses cuando se estaban configurando los servidores y creo que funcionaba bien. Ahora voy y compruebo y está dando un error que dice "El servidor RPC no está disponible". El script es una página C# ASP.NET, aunque he intentado llamadas comparables en PowerShell y ofrece el mismo error. La secuencia de comandos funciona bien para acceder a la información de la máquina local, pero no puede acceder a la información del servidor remoto."El servidor RPC no está disponible" mediante la consulta WMI
He pasado las últimas horas investigando todo lo que puedo encontrar, pero nada funciona. Establecí los permisos para WMI (control remoto & local), DCOM (control remoto & local) y toda la unidad de la computadora a la que estoy accediendo. Utilicé el nombre de la computadora, la dirección IP, el nombre completo de la computadora (xxx.echomountain.com) y probé varias configuraciones de suplantación y autenticación en el objeto ConnectionOptions.
sé el nombre de usuario/contraseñas que estoy usando son correctos ya que puedo acceder a los directorios fragmento de uno de los otros
¿Alguna idea de qué otra cosa podía comprobar que podría causar este error?
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);
}
Server Error in '/' Application.
The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Runtime.InteropServices.COMException: The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
Source Error:
Line 64: Line 65: //Get the results Line 66: ManagementObjectCollection oReturnCollection = oSearcher.Get(); Line 67: Line 68: //loop through found drives and write out info
Source File: c:\Web\medelaimages.com\iis\tool\boxinfoagent.aspx Line: 66
Stack Trace:
[COMException (0x800706ba): The RPC server is unavailable. (Exception from 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
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1
Recibo el mismo error pero es bastante aleatorio, es decir, a veces me sale este error, a veces no. Parece que depende del tipo de inicio de sesión que estoy usando. ¿Cómo inicias sesión? Cuenta de dominio? – raz3r
Mis inicios de sesión se configuran individualmente en cada servidor, aunque comparten las mismas credenciales. De hecho, me rendí al descubrir esto. Si lo haces funcionar, incluso de manera intermitente, me interesaría saber cómo lo estás haciendo. – jwynveen
Suponiendo que la secuencia de comandos se ejecuta en un equipo de dominio no debería tener ningún problema, en cambio si se está ejecutando fuera del dominio, intente con DOMAIN \\ nombre de usuario como nombre de usuario. Si utilizo DOMINIO \\ username como inicio de sesión, no obtengo el error (la mayoría de las veces). – raz3r