.net версия ядра: 2.1.500
ОС: Debian 9 (4.9.0-8-amd64 # 1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU / Linux)
Я пытаюсь остановить / запустить пул приложений из ОС Linux через ServerManager, но безуспешно.Согласно каталогу API это должно работать: https://apisof.net/catalog/Microsoft.Web.Administration.ServerManager
ServerManager.OpenRemote () генерирует исключение NullReference при попытке ApplicationPools:
// also trying ip adress
using (ServerManager manager = ServerManager.OpenRemote("someserver"))
{
try
{
if (manager.ApplicationPools == null) /* <= Here is exception!!! */
{
Console.WriteLine("ApplicationPool is null!");
}
else
{
foreach (var item in manager.ApplicationPools)
{
Console.WriteLine(" " + item.Name);
}
}
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
Console.WriteLine(" Trace=" + ex.StackTrace);
}
}
Результат:
Исключение: Ссылка на объект не установлена для экземпляра объекта.
Trace = at Microsoft.Web.Administration.ConfigurationManager.CreateWritableAdminManager (WebConfigurationMap webConfigMap, строка configPathToEdit, логический isAdminConfig, Boolean isRedirectionConffire.Configuration.Manager.Configuration.Manager.Configuration.Manager).(WebConfigurationMap configMap, строковое configPathToEdit, логическое значение isAdminConfig, логическое значение isRedirectionConfig) в Microsoft.Web.Administration.ConfigurationManager.GetConfiguration (String rawConfigurationPath, String cacheKey, логический_AdminConf_Web.Web)..Web.Administration.Lazy.Initialize [T] (T & target, CreateInstanceDelegate 1 valueFactory)
at Microsoft.Web.Administration.ServerManager.ApplicationPoolCollectionCreator()
at Microsoft.Web.Administration.Lazy.Initialize[T](T& target, CreateInstanceDelegate
1 valueFactory) вSomeMethod () в some_file.cs: строка 123
Когда ServerManager создает с помощью конструктора, который принимает строку, ApplicationPools создает исключение System.PlatformNotSupportedException:
using (ServerManager manager = new ServerManager(@"\\someserver\IISSharedConfig\applicationHost.config"))
{
try
{
if (manager.ApplicationPools == null) /* <= Here is exception!!! */
{
Console.WriteLine("ApplicationPool is null!");
}
else
{
foreach (var item in manager.ApplicationPools)
{
Console.WriteLine(" " + item.Name);
}
}
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
Exception e = ex.InnerException;
while (e != null)
{
Console.WriteLine("InnerException: " + e.Message);
e = e.InnerException;
}
Console.WriteLine(" Trace=" + ex.StackTrace);
}
}
Результат:
Исключение: Исключение было сгенерировано целью вызова.Внутреннее исключение: COM не поддерживаетсяSystem.Activator.CreateInstanceT в Microsoft.Web.Administration.ConfigurationManager.CreateAdminManager [TClass, TInterface] (WebConfigurationMap webConfigMap, логический isAdminConfig, Boolean isRedirectionConfig) по адресуBoolean isRedirectionConfig) в Microsoft.Web.Administration.ConfigurationManager.CreateConfiguration (WebConfigurationMap configMap, строка configPathToEdit, логический isAdminConfig, логический isRedirectionConfig) в Microsoft.Web.Administration.ConfigurationCoringGringernfigurationPath, String cacheKey, логическое значение isAdminConfig, логическое значение isRedirectionConfig) в Microsoft.Web.Administration.ServerManager.ApplicationPoolsSectionCreator () в Microsoft.Web.Administration.Lazy.Initialize [T] (T & target, CreateMact0) ()) в some_file.cs: строка 123
Как использовать ServerManager в Linux?