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 |