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
Escriba código para acceder al proveedor de SMS.
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