Yönetilen Kod Kullanarak Configuration Manager Zaman Uyumlu Hataları İşleme
Zaman uyumlu sorguda oluşan Configuration Manager hatasını işlemek için SmsQueryException özel durumunu yakalarsınız. Bu özel durum SMS_Exception] tarafından da yakalandığından, onu ve SmsConnectionException özel durumunu aynı catch bloğunda yakalayabilirsiniz.
Bir SMS_Exception yakalanan özel durum 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.
Not
Netlik sağlamak için, bu belgedeki örneklerin çoğu yalnızca özel durumları yeniden oluşturur. Daha bilgilendirici özel durum bilgileri istiyorsanız bunları aşağıdaki örnekle değiştirebilirsiniz.
Zaman uyumlu sorgu hatasını işlemek için
SMS Sağlayıcısına erişmek için kod yazın.
SmsQueryException ve SmsConnectionException özel durumlarını yakalamak için aşağıdaki örnek kodu kullanın.
Örnek
Aşağıdaki C# örnek işlevi var SMS_Package
olmayan bir paketi açmaya çalışır. Özel durum işleyicisinde kod, ne tür bir hatanın oluştuğunu belirler ve bilgilerini görüntüler.
Örnek kodu çağırma hakkında bilgi için bkz. Configuration Manager Kod Parçacıklarını Çağırma.
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);
}
}
}
Örnek yöntem aşağıdaki parametrelere sahiptir:
Parametre | Tür | Açıklama |
---|---|---|
connection |
- WqlConnectionManager |
Sağlayıcıya geçerli bir bağlantı. |
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
Hatalar hakkında YönetilenKod Kullanarak Configuration Manager Zaman Uyumsuz Hataları İşleme
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