Yönetilen Kod Kullanarak Configuration Manager Zaman Uyumsuz Hataları İşleme
Zaman uyumsuz bir sorgu sırasında oluşan Configuration Manager hatasını işlemek için SmsBackgroundWorker.QueryProcessorCompleted olay işleyicisine geçirilen Hata Özel Durumu özelliğini test RunWorkerCompletedEventArgs
edin. Hata değilsenull
, bir özel durum oluştu ve nedenini bulmak için Hata'yı kullanıyorsunuz.
Hata bir SmsQueryException ise, bunu kullanarak temel alınan __ExtendedException
veya SMS_ExtendedException
öğesine ulaşabilirsiniz. Yönetilen SMS Sağlayıcısı kitaplığı bu özel durumları sarmalamadığından, bunlara erişmek için System.Management ad alanı ManagementException nesnesini kullanmanız gerekir.
Zaman uyumsuz sorgu hatasını işlemek için
Zaman uyumsuz bir sorgu oluşturun.
SmsBackgroundWorker.QueryProcessorCompleted olay işleyicisi zaman uyumsuz sorgusunda aşağıdaki örnekteki kodu uygulayın.
Zaman uyumsuz sorguyu çalıştırın. Özel durum işleyicisini test etmek için, gibi
Select & from &&&
hatalı biçimlendirilmiş bir sorgu dizesini QueryProcessorBase.ProcessQuery yöntemine geçirin.
Örnek
Aşağıdaki örnek bir SmsBackgroundWorker.QueryProcessorCompleted olay işleyicisi uygular.
Örnek kodu çağırma hakkında bilgi için bkz. Configuration Manager Kod Parçacıklarını Çağırma.
void bw1_QueryProcessorCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
Console.WriteLine("There was an Error");
if (e.Error is SmsQueryException)
{
SmsQueryException queryException = (SmsQueryException)e.Error;
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.Error is SmsConnectionException)
{
Console.WriteLine("There was a connection error :" + ((SmsConnectionException)e.Error).Message);
Console.WriteLine(((SmsConnectionException)e.Error).ErrorCode);
}
}
Console.WriteLine("Done...");
}
Örnek yöntem aşağıdaki parametrelere sahiptir:
Parametre | Tür | Açıklama |
---|---|---|
sender |
- Object |
Olayın kaynağı. |
e |
- RunWorkerCompletedEventArgs |
Olay verileri. Daha fazla bilgi için bkz . RunWorkerCompletedEventArgs Sınıfı. |
Kodu Derleme
Bu C# örneği şunları gerektirir:
Ad alanları
Sistem
System.Collections.Generic
System.Text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
System.Management
System.ComponentModel
Derleme
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
System.Management
Sağlam Programlama
Hata işleme hakkında daha fazla bilgi için bkz. Configuration Manager Hataları Hakkında.
Ayrıca Bkz
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin