Как программно проверить «Разрешить внутренние свойства IIS» в приложении COM +? - PullRequest
1 голос
/ 02 декабря 2008

Службы компонентов -> Компьютеры -> Мой компьютер -> Приложения COM +

Открыть объект приложения COM +.

Открытые компоненты.

Щелкните правой кнопкой мыши класс и выберите Свойства.

В разделе «Дополнительно» есть флажок «Разрешить внутренние свойства IIS».

Как мне установить этот флажок программно?

Я могу создавать и удалять приложения COM + программным способом, но класс ComApplication, похоже, не имеет способов изменить настройки в созданном приложении.

Ответы [ 2 ]

3 голосов
/ 02 декабря 2008

Я узнал, как это сделать.

Очевидно, мне нужно получить коллекцию приложений COM +, найти то, что я хочу (по имени), затем получить коллекцию компонентов в приложении, затем пройти коллекцию и установить атрибут:

            //get collection of applications
        COMAdminCatalog catalog = new COMAdminCatalog();

        catalog.Connect("127.0.0.1");

        COMAdminCatalogCollection applications = (COMAdminCatalogCollection)catalog.GetCollection("Applications");

        applications.Populate(); //no idea why that is necessary, seems to be

        // appId for the application we are looking for
        object appId = new object();

        int count = applications.Count;
        ICatalogObject item;

        if (count == 0) return;

        //search collection for item with name we are looking for
        for (int i = 0; i < count; i++)
        {

            item = (ICatalogObject)applications.get_Item(i);

            if (applicationName == (string)item.get_Value("Name"))
            {

                appId = item.Key;

                Console.WriteLine("appId found for " + applicationName + ": " + appId.ToString());

            }

        }

        // get all components for the application
        COMAdminCatalogCollection components;

        components = (COMAdminCatalogCollection)applications.GetCollection("Components", appId);
        components.Populate(); // again, no idea why this is necessary

        // set the attribute in all components

        foreach (COMAdminCatalogObject component in components)
        {

            Console.WriteLine("Setting IISIntrinsics attribute in " + component.Name + ".");
            component.set_Value("IISIntrinsics", true);
            components.SaveChanges();

        }

Я думаю, что это можно сделать лучше и с меньшим количеством кастингов. Но я не знаю как.

Это подойдет.

0 голосов
/ 02 декабря 2008

У меня нет опыта работы с этим конкретным свойством, но, похоже, оно задокументировано в MSDN .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...