2011-03-07 101 views
11

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

+0

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

+0

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

+0

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

Respuesta

3

El mensaje de error que dice que RPC está bloqueado, que es la configuración política por defecto en Windows 7 y 2008. De cualquier abierta a través de la política, o utilizar WMI para conectarse y gestionar los anfitriones. En una red interna y confiable, RPC generalmente está habilitado. Los consejos de políticas de seguridad informática del gobierno de EE. UU., Como los que crearon FDCC y USGCB, tienen no configuración recomendada para RPC, por lo que está bien habilitarla. La administración de sistemas activos a través de WMI es muy muy difícil ya que no se puede ver el registro de los hosts remotos, las tareas programadas, las carpetas y los archivos. Sin embargo, puede administrar fácilmente los servicios a través de WMI.

3

El error The RPC server is unavailable. (Exception from HRESULT: 0x800706BA) puede ocurrir si

  • RPC de entrada/conexiones WMI están bloqueados en la máquina objetivo debido a las restricciones del cortafuegos

    o

  • sólo porque que ha entrado el nombre de host/IP incorrecta dirección de la máquina de destino.

El error se produce antes de queninguna autentificación y/o autorización de las acciones, por lo que se trata de permisos no es necesaria en este paso. De hecho, si la cuenta de usuario carece de los permisos necesarios para un espacio de nombres particular, obtendría otro error y código de error: access denied. (0x80041003).

El artículo de MSDN cubre la adición de excepciones de cortafuegos para el acceso remoto de WMI: "Connecting to WMI Remotely".

0

Simplemente vaya al administrador de IIS. Inicie el servicio de su sitio web en el grupo de aplicaciones. Funciona para mí

0

Además, debe habilitar la regla de Windows Management Instrumentation (WMI) en el firewall de Windows en la máquina remota.

1] Open Windows Firewall.
2] Click on Allow app or feature through windows firewall.
3] Enable Privilege for Windows Management Instrumentation(WMI).

-1

Me enfrenté al mismo problema.Anteriormente recibí este error al usar la IP del servidor pero pude conectarme después de usar el nombre de FQDN del servidor. Después de la resolución de problemas, encontré que mi registro DNS PTR no era correcto. Después de arreglar eso, pude conectar WMI con dirección IP también. Utilicé la herramienta de prueba wbemtest WMI.

Cuestiones relacionadas