Cómo controlar Configuration Manager errores sincrónicos mediante código administrado

Para controlar un error de Configuration Manager que se genera en una consulta sincrónica, se detecta la excepción SmsQueryException. Dado que esta excepción también se detecta mediante SMS_Exception], puede detectarla y la excepción SmsConnectionException en el mismo bloque catch.

Si la excepción que se detecta en un SMS_Exception es una excepción SmsQueryException, puede usarla para llegar al subyacente __ExtendedException o SMS_ExtendedException. Dado que la biblioteca administrada del proveedor de SMS no encapsula estas excepciones, deberá usar el objeto ManagementException del espacio de nombres System.Management para acceder a ellas.

Nota:

Para mayor claridad, la mayoría de los ejemplos de esta documentación simplemente vuelven a iniciar excepciones. Puede reemplazarlos por el ejemplo siguiente si desea obtener información más informativa sobre las excepciones.

Para controlar un error de consulta sincrónica

  1. Escriba código para acceder al proveedor de SMS.

  2. Use el código de ejemplo siguiente para detectar las excepciones SmsQueryException y SmsConnectionException .

Ejemplo

La siguiente función de ejemplo de C# intenta abrir un paquete inexistente SMS_Package . En el controlador de excepciones, el código determina qué tipo de error se ha generado y muestra su información.

Para obtener información sobre cómo llamar al código de ejemplo, vea Llamar a fragmentos de código de Configuration Manager.

public void ExerciseException(WqlConnectionManager connection)  
{  
    try  
    {  

        IResultObject package = connection.GetInstance(@"SMS_Package.PackageID='UNKNOWN'");  
        Console.WriteLine("Package Name: " + package["Name"].StringValue);  
        Console.WriteLine("Package Description: " + package["Description"].StringValue);  

    }  
    catch (SmsException e)  
    {  
        if (e is SmsQueryException)  
        {  
            SmsQueryException queryException = (SmsQueryException)e;  
            Console.WriteLine(queryException.Message);  

            // Get either the __ExtendedStatus or SMS_ExtendedStatus object and display various properties.  
            ManagementException mgmtExcept = queryException.InnerException as ManagementException;  

            if (mgmtExcept != null)  
            {  
                if (string.Equals(mgmtExcept.ErrorInformation.ClassPath.ToString(), "SMS_ExtendedStatus", StringComparison.OrdinalIgnoreCase) == true)  
                {  
                    Console.WriteLine("Configuration Manager provider exception");  
                }  

                else if (string.Equals(mgmtExcept.ErrorInformation.ClassPath.ToString(), "__ExtendedStatus", StringComparison.OrdinalIgnoreCase) == true)  
                {  
                    Console.WriteLine("WMI exception");  
                }  
                Console.WriteLine(mgmtExcept.ErrorCode.ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["ParameterInfo"].ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["Operation"].ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["ProviderName"].ToString());  
            }  

        }  
        if (e is SmsConnectionException)  
        {  
            Console.WriteLine("There was a connection error :" + ((SmsConnectionException)e).Message);  
            Console.WriteLine(((SmsConnectionException)e).ErrorCode);  
        }  
    }  
}  

El método de ejemplo tiene los parámetros siguientes:

Parámetro Tipo Descripción
connection - WqlConnectionManager Una conexión válida al proveedor.

Compilar el código

Este ejemplo de C# requiere:

Espacios de nombres

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.Management

System.ComponentModel

Ensamblado

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

System.Management

Programación sólida

Para obtener más información sobre el control de errores, consulte Acerca de los errores de Configuration Manager.

Consulta también

Acerca de los erroresCómo controlar Configuration Manager errores asincrónicos mediante código administrado