Недопустимая ошибка пространства имен в system.management
У меня есть программа, которая будет запрашивать состояние ресурсов BizTalk, в частности компонент ReceiveLocations. Когда я запускаю образец программы, полученный из
C:\Program Files (x86)\Microsoft BizTalk Server 2013 R2\SDK\Samples\Admin\WMI\Enumerate Receive Locationsя получаю ошибку Недопустимое Пространство Имен на линии :
ManagementObjectCollection QueryCol = Searcher.Get();
с трассировкой стека :
at System.Management.ThreadDispatch.Start() at System.Management.ManagementScope.Initialize() at System.Management.ManagementObjectSearcher.Initialize() at System.Management.ManagementObjectSearcher.Get() at Microsoft.Samples.BizTalk.WmiAdmin.EnumerateWMIClasses.Main(String[] args) in C:\Users\tshumae.FBC\Desktop\BIZTALK\CSharp\EnumRLs.cs:line 114
Это полная программа :
<pre>[STAThread] static void Main(string[] args) { // Display help information if (args.Length > 0) { if (args[0] == "/?") { .... .... } } try { //Create the WMI search object. ManagementObjectSearcher Searcher = new ManagementObjectSearcher(); // create the scope node so we can set the WMI root node correctly. ManagementScope Scope = new ManagementScope("root\\"+server+""); Searcher.Scope = Scope; // Build a Query to enumerate the MSBTS_ReceiveLocation instances if an argument // is supplied use it to select only the matching RL. SelectQuery Query = new SelectQuery(); if (args.Length == 0) Query.QueryString="SELECT * FROM MSBTS_ReceiveLocation"; else Query.QueryString="SELECT * FROM MSBTS_ReceiveLocation WHERE Name = '" + args[0] + "'"; // Set the query for the searcher. Searcher.Query = Query; // Execute the query and determine if any results were obtained. ManagementObjectCollection QueryCol = Searcher.Get(); // Use a bool to tell if we enter the for loop // below because Count property is not supported bool ReceiveLocationFound = false; // Enumerate all properties. foreach (ManagementBaseObject envVar in QueryCol) { // There is at least one Receive Location ReceiveLocationFound = true; Console.WriteLine("**************************************************"); Console.WriteLine("Receive Location: {0}", envVar["Name"]); Console.WriteLine("**************************************************"); PropertyDataCollection envVarProperties = envVar.Properties; Console.WriteLine("Output in the form of: Property: {Value}"); foreach (PropertyData envVarProperty in envVarProperties) { Console.WriteLine(envVarProperty.Name+ ":\t" + envVarProperty.Value); } } if (!ReceiveLocationFound) { Console.WriteLine("No receive locations found matching the specified name."); } } catch(Exception excep) { Console.WriteLine(excep.ToString()); } Console.WriteLine("\r\n\r\nPress Enter to continue..."); Console.Read(); }
Что я упускаю? Есть ли что-то конкретное, что мне нужно настроить для запроса ресурсов BizTalk за пределами пространства имен System.Management, или это проблема с самим образцом кода?
Что я уже пробовал:
Я попытался использовать этот код в отдельном приложении MVC, где работают запросы WMI, но я получаю ту же ошибку. Однако запросы WMI в приложении MVC предназначены для запроса статистики дисков удаленного сервера, а не служб BizTalk Server.