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 |