Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Represents the method that will handle a MapPath
event, which occurs when an operation requests the physical path to be mapped for the current request.
Syntax
virtual REQUEST_NOTIFICATION_STATUS OnMapPath(
IN IHttpContext* pHttpContext,
IN IMapPathProvider* pProvider
);
Parameters
pHttpContext
[IN] A pointer to an IHttpContext interface.
pProvider
[IN] A pointer to an IMapPathProvider interface.
Return Value
A REQUEST_NOTIFICATION_STATUS value.
Remarks
When a request-level module is registered for the RQ_MAP_PATH notification, IIS will call the module's OnMapPath
method when an operation requests the physical path to be mapped for the current request.
Note
Request-level modules can register for the MapPath
event notification by registering for RQ_MAP_PATH
in the module's RegisterModule function.
Example
The following code example demonstrates how to create a request-level HTTP module that registers for the RQ_MAP_PATH
event notifications. When an operation requests the physical path to be mapped for the current request, IIS will call the example module's OnMapPath
method.
// 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;
}
Requirements
Type | Description |
---|---|
Client | - IIS 7.0 on Windows Vista - IIS 7.5 on Windows 7 - IIS 8.0 on Windows 8 - IIS 10.0 on Windows 10 |
Server | - IIS 7.0 on Windows Server 2008 - IIS 7.5 on Windows Server 2008 R2 - IIS 8.0 on Windows Server 2012 - IIS 8.5 on Windows Server 2012 R2 - IIS 10.0 on Windows Server 2016 |
Product | - 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 |