如何以编程方式检查COM +应用程序中的“允许IIS内部属性”?

时间:2008-12-02 15:34:39

标签: .net components com+

组件服务 - >计算机 - >我的电脑 - > COM +应用程序

打开COM + Application对象。

打开组件。

右键单击一个类,然后选择“属性”。

在“高级”下,有一个“允许IIS内在属性”复选框。

如何以编程方式检查此复选框?

我可以通过编程方式创建和删除COM + Applications,但ComApplication类似乎没有办法在创建的应用程序中更改设置。

2 个答案:

答案 0 :(得分:3)

我发现了怎么做。

显然我必须得到一个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();

        }

我认为这可以做得更好,铸件更少。但我不知道如何。

这样做。

答案 1 :(得分:0)

我没有使用此特定属性的经验,但它似乎记录在MSDN