Método CHttpModule::OnMapPath
Representa o método que manipulará um MapPath
evento, que ocorre quando uma operação solicita que o caminho físico seja mapeado para a solicitação atual.
Sintaxe
virtual REQUEST_NOTIFICATION_STATUS OnMapPath(
IN IHttpContext* pHttpContext,
IN IMapPathProvider* pProvider
);
Parâmetros
pHttpContext
[IN] Um ponteiro para uma interface IHttpContext .
pProvider
[IN] Um ponteiro para uma interface IMapPathProvider .
Valor Retornado
Um valor REQUEST_NOTIFICATION_STATUS .
Comentários
Quando um módulo de nível de solicitação é registrado para a notificação de RQ_MAP_PATH , o IIS chamará o método do OnMapPath
módulo quando uma operação solicitar que o caminho físico seja mapeado para a solicitação atual.
Observação
Os módulos no nível da solicitação podem se registrar para a MapPath
notificação de evento registrando-se RQ_MAP_PATH
na função RegisterModule do módulo.
Exemplo
O exemplo de código a seguir demonstra como criar um módulo HTTP no nível da solicitação que se registra para as notificações de RQ_MAP_PATH
evento. Quando uma operação solicita que o caminho físico seja mapeado para a solicitação atual, o IIS chamará o método do módulo de OnMapPath
exemplo.
// 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 | Descrição |
---|---|
Cliente | – IIS 7.0 no Windows Vista – IIS 7.5 no Windows 7 – IIS 8.0 no Windows 8 – IIS 10.0 no Windows 10 |
Servidor | – IIS 7.0 no Windows Server 2008 – IIS 7.5 no Windows Server 2008 R2 – IIS 8.0 no Windows Server 2012 – IIS 8.5 no Windows Server 2012 R2 – IIS 10.0 no Windows Server 2016 |
Produto | - 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 |
parâmetro | Httpserv.h |