IAppHostProperty 接口

表示配置元素的属性。

语法

interface IAppHostProperty : IUnknown  

方法

下表列出了 接口公开 IAppHostProperty 的方法。

方法 说明
Clear 从配置系统保留的 XML 中删除当前属性。
GetMetadata 获取当前属性的元数据值。
SetMetadata 设置当前属性的元数据。

属性

下表列出了 接口公开 IAppHostProperty 的属性。

属性 说明
名称 获取属性的名称。
Exception 如果当前属性值不符合属性架构中指定的验证条件,则获取异常。
架构 获取分配给当前属性的架构。
StringValue 获取配置系统存储在 XML 中的 属性的持久字符串值。
获取或设置当前属性的值。

示例

下面的代码示例使用 IAppHostProperty::Value 属性读取 属性的值enabled


#pragma once

#include <stdio.h>
#include <string.h>
#include <ahadmin.h>

int main()
{
    IAppHostAdminManager        * pMgr        = NULL;
    IAppHostElement             * pParentElem = NULL;
    IAppHostElementCollection   * pElemColl   = NULL;
    IAppHostElement             * pElem       = NULL;
    IAppHostPropertyCollection  * pElemProps  = NULL;
    IAppHostProperty            * pElemProp   = NULL;

    HRESULT hr                   = S_OK;
    BSTR    bstrConfigCommitPath = SysAllocString( L"MACHINE/WEBROOT/APPHOST" );
    BSTR    bstrSectionName      = SysAllocString( L"system.applicationHost/sites" );
    BSTR    bstrPropertyName     = SysAllocString( L"name" );
    DWORD   dwElementCount       = 0;
    VARIANT vtValue;
    VARIANT vtPropertyName;
    vtPropertyName.vt            = VT_BSTR;
    vtPropertyName.bstrVal       = bstrPropertyName;

    // Initialize
    hr = CoInitializeEx( NULL, COINIT_MULTITHREADED );
    if ( FAILED( hr ) )
    {
        printf_s( "ERROR: Unable to initialize\n" );
        goto exit;
    } 

    // Create
    hr = CoCreateInstance( __uuidof( AppHostAdminManager ), NULL, 
            CLSCTX_INPROC_SERVER,
            __uuidof( IAppHostAdminManager ), (void**) &pMgr );
    if( FAILED( hr ) )
    {
        printf_s( "ERROR: Unable to create an IAppHostAdminManager\n" );
        goto exit;
    }
    
    // Get the admin section
    hr = pMgr->GetAdminSection( bstrSectionName, bstrConfigCommitPath, &pParentElem );
    if ( FAILED( hr ) || ( &pParentElem == NULL ) )
    {
        if ( E_ACCESSDENIED == hr )
        {
            printf_s( "ERROR: Access to configuration denied.\n" );
            printf_s( "       Run sample as an administrator.\n" );
        }
        else
        {
            printf_s( "ERROR: Unable to get asp configuration section.\n" );
        }
        goto exit;
    }


    // Get the site collection
    hr = pParentElem->get_Collection( &pElemColl );
    if ( FAILED ( hr ) || ( &pElemColl == NULL ) )
    {
        wprintf_s ( L"ERROR: Unable to access element collection of %s\n", bstrSectionName );
        goto exit;
    }

    // Get the elements
    wprintf_s( L"Seaching for elements in %s\n", bstrSectionName );

    hr = pElemColl->get_Count( &dwElementCount );
    for ( USHORT i = 0; i < dwElementCount; i++ )
    {
        VARIANT vtItemIndex;
        vtItemIndex.vt = VT_I2;
        vtItemIndex.iVal = i;

        // Add a new section group
        hr = pElemColl->get_Item( vtItemIndex, &pElem );
        if ( FAILED( hr ) || ( &pElem == NULL ) )
        {
            wprintf_s( L"ERROR: Unable to find element: %d\n", i );
            goto loop_cleanup;
        }

        // Get the child elements
        hr = pElem->get_Properties( &pElemProps );
        if ( FAILED( hr ) || ( &pElemProps == NULL ) )
        {
            printf_s( "ERROR: Unable to access attributes\n" );
            goto exit;
        }

        hr = pElemProps->get_Item( vtPropertyName, &pElemProp );
        if ( FAILED( hr ) || ( pElemProp == NULL ) )
        {
            printf_s( "ERROR: Unable to access attribute\n" );
            goto exit;
        }

        hr = pElemProp->get_Value( &vtValue );
        if ( FAILED( hr ) )
        {    
            wprintf_s( L"ERROR: Unable to access attribute value: %s\n", bstrPropertyName );
            goto exit;
        }

        wprintf_s( L"Site name is: %s\n", vtValue.bstrVal );

loop_cleanup:
        if ( pElem != NULL )
        {
            printf_s("\treleasing collection element\n");
            pElem->Release(); 
            pElem = NULL;
        }
    }

exit:
    // Exiting / Unwinding    
    if ( pElemProp != NULL )
    {
        pElemProp->Release();
        pElemProp = NULL;
    }
    if ( pElemProps != NULL )
    {
        pElemProps->Release(); 
        pElemProps = NULL;
    }
    if ( pElem != NULL )
    {
        pElem->Release();
        pElem = NULL;
    }
    if ( pElemColl != NULL )
    {
        pElemColl->Release(); 
        pElemColl = NULL;
    }
    if ( pParentElem != NULL )
    {
        pParentElem->Release(); 
        pParentElem = NULL;
    }
    if ( pMgr != NULL )
    {
        pMgr->Release(); 
        pMgr = NULL;
    }

    SysFreeString( bstrConfigCommitPath );
    SysFreeString( bstrSectionName );

    // Uninitialize
    CoUninitialize();

    return 0;
};

继承层次结构

IUnknown

IAppHostProperty

要求

类型 说明
客户端 - Windows Vista 上的 IIS 7.0
- Windows 7 上的 IIS 7.5
- Windows 8 上的 IIS 8.0
- Windows 10 上的 IIS 10.0
服务器 - Windows Server 2008 上的 IIS 7.0
- Windows Server 2008 R2 上的 IIS 7.5
- Windows Server 2012 上的 IIS 8.0
- Windows Server 2012 R2 上的 IIS 8.5
- Windows Server 2016 上的 IIS 10.0
产品 - IIS 7.0、IIS 7.5、IIS 8.0、IIS 8.5、IIS 10.0
- IIS Express 7.5、IIS Express 8.0、IIS Express 10.0
Header Ahadmin.h

另请参阅

应用程序主机管理接口
IAppHostElement 接口