.Net Core Microsoft.Web.Administration ServerManager из Linux - PullRequest
0 голосов
/ 06 декабря 2018

.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?

1 Ответ

0 голосов
/ 06 декабря 2018

Я считаю, что то, что вы пытаетесь сделать, не поддерживается Linux .См. Внизу ссылки , которую вы разместили в своем вопросе:

Платформа

.NET Standard + Расширения платформы

Насколько я помню, расширения платформы являются дополнениями, которые не являются кроссплатформенными, поэтому их нельзя использовать в приложении, работающем на Linux .

Вы также можете увидеть подсказку во второй сообщенной вами ошибке:

COM не поддерживается

Что верно для Linux .

Надеюсь, это поможет!

...