Freigeben über


CHttpModule::OnMapPath-Methode

Stellt die -Methode dar, die ein MapPath Ereignis behandelt, das auftritt, wenn ein Vorgang anfordert, den physischen Pfad für die aktuelle Anforderung zuzuordnen.

Syntax

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

Parameter

pHttpContext
[IN] Ein Zeiger auf eine IHttpContext-Schnittstelle .

pProvider
[IN] Ein Zeiger auf eine IMapPathProvider-Schnittstelle .

Rückgabewert

Ein REQUEST_NOTIFICATION_STATUS Wert.

Bemerkungen

Wenn ein Modul auf Anforderungsebene für die RQ_MAP_PATH Benachrichtigung registriert wird, ruft IIS die Methode des Moduls OnMapPath auf, wenn ein Vorgang den physischen Pfad für die aktuelle Anforderung anfordert.

Hinweis

Module auf Anforderungsebene können sich für die MapPath Ereignisbenachrichtigung registrieren, indem sie sich in der RegisterModule-Funktion des Moduls registrierenRQ_MAP_PATH.

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie Sie ein HTTP-Modul auf Anforderungsebene erstellen, das sich für die RQ_MAP_PATH Ereignisbenachrichtigungen registriert. Wenn ein Vorgang die Zuordnung des physischen Pfads für die aktuelle Anforderung anfordert, ruft IIS die Methode des Beispielmoduls OnMapPath auf.

//  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;
}  

Anforderungen

type BESCHREIBUNG
Client – IIS 7.0 unter Windows Vista
– IIS 7.5 unter Windows 7
– IIS 8.0 unter Windows 8
– IIS 10.0 auf Windows 10
Server – IIS 7.0 unter Windows Server 2008
– IIS 7.5 unter Windows Server 2008 R2
– IIS 8.0 unter Windows Server 2012
– IIS 8.5 unter Windows Server 2012 R2
– IIS 10.0 auf Windows Server 2016
Produkt – 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 Httpserv.h

Weitere Informationen

CHttpModule-Klasse