Pregunta

necesito para supervisar el estado de una aplicación en las aplicaciones de la piscina de IIS 7 desde otra máquina en el mismo dominio. Mi aplicación de monitoreo debe estar en C # y se ejecuta como un servicio de Windows.

En mi servidor, puedo crear un usuario con derechos de administración y ejecutar el comando aspnet_regiis -ga máquina \ nombre de usuario wich trabajó con éxito.

Mi problema es cuando intento acceder al grupo de aplicaciones sigo teniendo COMExcepttion "Acceso denegado". ¿Qué hice mal paso o wich me he perdido?

http: / /patelshailesh.com/index.php/create-a-website-application-pool-programmatically-using-csharp como ejemplo.

        int status = 0;
        string ipAddress = "10.20.2.13";
        string username = "username";
        string password = "password";
        try
        {
            DirectoryEntry de = new DirectoryEntry(string.Format("IIS://{0}/W3SVC/AppPools/MyAppPoolName", ipAddress), username, password);

            //the exception is thron here.
            status = (int)de.InvokeGet("AppPoolState");

            switch (status)
            {
                case 2:
                    //Runnig
                    break;
                case 4:
                    //Stopped
                    break;
                default:
                    break;
            }
        }
        catch (Exception ex)
        {

        }
¿Fue útil?

Solución

El código que has encontrado parece ser para IIS6. Tal vez sería mejor usar la nueva API de gestión y apoyado IIS7. Se podría empezar llamando ServerManager.OpenRemote para obtener el objeto ServerManager .

Otros consejos

Es posible que necesite alrededor de meterse con el AuthenticationType , el valor por defecto a partir de 2.0 es seguro, pero es posible que tenga que configurar SSL. Además, he visto mensajes de acceso denegado de las cuentas con el "usuario debe cambiar la contraseña en el siguiente inicio de sesión" marcada.

Esto funciona bastante bien en Windows 7 y Windows Server 2008 (por desgracia no en XP y 2003 Server). He tenido que añadir papel servicio de administración de IIS en el servidor a través del Administrador con el fin de permitir la conexión remota.

He aquí un breve ejemplo de cómo obtener el estado de un grupo de aplicaciones.

public ObjectState State
    {
        get
        {
            ServerManager server = null;
            ObjectState result = ObjectState.Unknown;
            try
            {
                server = ServerManager.OpenRemote(address);
                result = server.ApplicationPools[name].State;
            }
            finally
            {
                if (server != null)
                    server.Dispose();
            }

            return result;
        }
    }

Gracias a driis.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top