IIS中,当在worker中运行代码时,IIS应用程序池配置失败

时间:2012-09-27 13:18:35

标签: windows winapi iis-7

在查询iis7配置数据时,它在工作进程中运行时失败,在控制台应用程序中运行正常。

        COSERVERINFO     csiMachineName;

        csiMachineName.pAuthInfo     = NULL;
        csiMachineName.dwReserved1 = 0;
        csiMachineName.dwReserved2 = 0;
        csiMachineName.pwszName      = L"localhost";

        hr = CoGetClassObject(
            __uuidof( AppHostAdminManager ),
            CLSCTX_SERVER,
            &csiMachineName,
            IID_IClassFactory,
            (void**) &(pClassFactory.GetInterfacePtr()));

        hr = pClassFactory->CreateInstance(
            NULL, __uuidof( IAppHostAdminManager ), (void **) &(iisAdmin.GetInterfacePtr()));

        bstr_t bstrSectionName("system.applicationHost/applicationPools");
        bstr_t bstrPath("MACHINE/WEBROOT/APPHOST");

        hr = iisAdmin->GetAdminSection(bstrSectionName, bstrPath, &(sitesElement.GetInterfacePtr()) );

        hr = sitesElement->get_Collection(&(sitesElementCollection.GetInterfacePtr()));

    DWORD sitesCount = 0;
        hr = sitesElementCollection->get_Count(&sitesCount);
当此代码在IIS模块中运行时,

sitesCount为0,但在Windows应用程序中运行时可以正常。

任何想法?

1 个答案:

答案 0 :(得分:0)

问题很可能是应用程序池标识没有管理IIS的适当权限。尝试将应用程序池标识设置为与运行控制台应用程序时使用的用户相同,并查看是否有所不同。如果是这样,您可能需要在作为提升用户运行的单独AppPool中设置此代码,以使代码运行,同时限制作为提升用户运行的代码。