1

查询 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);

sitesCount当此代码在 IIS 模块中运行时为 0,但在 Windows 应用程序中运行时正常。

任何想法?

4

1 回答 1

0

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

于 2012-10-01T15:47:51.437 回答