Compartir a través de


CHttpModule::OnMapPath (Método)

Representa el método que controlará un MapPath evento, que se produce cuando una operación solicita que se asigne la ruta de acceso física para la solicitud actual.

Sintaxis

virtual REQUEST_NOTIFICATION_STATUS OnMapPath(  
   IN IHttpContext* pHttpContext,  
   IN IMapPathProvider* pProvider  
);  

Parámetros

pHttpContext
[IN] Puntero a una interfaz IHttpContext .

pProvider
[IN] Puntero a una interfaz IMapPathProvider .

Valor devuelto

Valor de REQUEST_NOTIFICATION_STATUS .

Comentarios

Cuando se registra un módulo de nivel de solicitud para la notificación de RQ_MAP_PATH , IIS llamará al método del OnMapPath módulo cuando una operación solicite que se asigne la ruta de acceso física para la solicitud actual.

Nota:

Los módulos de nivel de solicitud se pueden registrar para la MapPath notificación de eventos registrando en RQ_MAP_PATH la función RegisterModule del módulo.

Ejemplo

En el ejemplo de código siguiente se muestra cómo crear un módulo HTTP de nivel de solicitud que se registra para las notificaciones de RQ_MAP_PATH eventos. Cuando una operación solicita que se asigne la ruta de acceso física para la solicitud actual, IIS llamará al método del módulo de OnMapPath ejemplo.

//  Insert data from ostringstream into the response
//  On error, Provider error status set here
//  ostringstream  buffer cleared for next call 

HRESULT  WECbyRefChunk( std::ostringstream  &os, IHttpContext *pHttpContext, 
                       IHttpEventProvider *pProvider, LONG InsertPosition= -1)
{
    HRESULT hr = S_OK;

    IHttpTraceContext * pTraceContext = pHttpContext->GetTraceContext();

    hr = pTraceContext->QuickTrace(L"WECbyRefChunk",L"data 2",E_FAIL,6);
    if (FAILED(hr)){
        LOG_ERR_HR(hr,"QuickTrace");
        return hr;
    }
    // create convenience string from ostringstream  
    std::string str(os.str());

    HTTP_DATA_CHUNK dc;
    dc.DataChunkType = HttpDataChunkFromMemory;
    dc.FromMemory.BufferLength = static_cast<DWORD>(str.size());
    dc.FromMemory.pBuffer = pHttpContext->AllocateRequestMemory( 
        static_cast<DWORD>( str.size()+1) );

    if(!dc.FromMemory.pBuffer){
        hr = HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY);
        LOG_ERR_HR(hr,"AllocateRequestMemory");
        pProvider->SetErrorStatus(hr);
        return hr;
    }

    //  use char pointer p for convenience
    char *p = static_cast<char *>(dc.FromMemory.pBuffer);
    strcpy_s(p, str.size()+1, str.c_str());

    hr = pHttpContext->GetResponse()->WriteEntityChunkByReference( 
        &dc, InsertPosition );

    if (FAILED(hr)){
        LOG_ERR_HR(hr,"AllocateRequestMemory");
        pProvider->SetErrorStatus( hr );
    }

    os.str("");                // clear the ostringstream for next call

    return hr;
}  

Requisitos

Tipo Descripción
Remoto - IIS 7.0 en Windows Vista
- IIS 7.5 en Windows 7
- IIS 8.0 en Windows 8
- IIS 10.0 en Windows 10
Servidor - IIS 7.0 en Windows Server 2008
- IIS 7.5 en Windows Server 2008 R2
- IIS 8.0 en Windows Server 2012
- IIS 8.5 en Windows Server 2012 R2
- IIS 10.0 en Windows Server 2016
Producto - 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
Encabezado Httpserv.h

Consulte también

CHttpModule (clase)