Come gestire gli errori sincroni Configuration Manager usando codice gestito
Per gestire un errore Configuration Manager generato in una query sincrona, si intercetta l'eccezione SmsQueryException. Poiché questa eccezione viene intercettata anche da SMS_Exception], è possibile intercettarla e l'eccezione SmsConnectionException nello stesso blocco catch.
Se l'eccezione rilevata in un SMS_Exception è un'eccezione SmsQueryException, è possibile usarla per accedere al sottostante __ExtendedException
o SMS_ExtendedException
. Poiché la libreria del provider SMS gestito non esegue il wrapping di queste eccezioni, sarà necessario utilizzare l'oggetto ManagementException dello spazio dei nomi System.Management per accedervi.
Nota
Per maggiore chiarezza, la maggior parte degli esempi in questa documentazione si limita a generare nuovamente eccezioni. È possibile sostituirli con l'esempio seguente se si vogliono informazioni più dettagliate sulle eccezioni.
Per gestire un errore di query sincrono
Scrivere codice per accedere al provider SMS.
Usare il codice di esempio seguente per intercettare le eccezioni SmsQueryException e SmsConnectionException .
Esempio
La funzione di esempio C# seguente tenta di aprire un pacchetto inesistente SMS_Package
. Nel gestore delle eccezioni il codice determina il tipo di errore generato e visualizza le relative informazioni.
Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice 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);
}
}
}
Il metodo di esempio include i parametri seguenti:
Parametro | Tipo | Descrizione |
---|---|---|
connection |
- WqlConnectionManager |
Connessione valida al provider. |
Compilazione del codice
Questo esempio C# richiede:
Namespaces
Sistema
System.collections.generic
System.Text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
System.Management
System.ComponentModel
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
System.Management
Programmazione efficiente
Per altre informazioni sulla gestione degli errori, vedere Informazioni sugli errori di Configuration Manager.
Vedere anche
Informazioni sugli erroriCome gestire Configuration Manager errori asincroni tramite codice gestito
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per