Export (0) Print
Expand All
Expand Minimize

CHttpModule::OnMapPath Method

IIS 7.0

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.

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

pHttpContext

[IN] A pointer to an IHttpContext interface.

pProvider

[IN] A pointer to an IMapPathProvider interface.

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.

NoteNote:

Request-level modules can register for the MapPath event notification by registering for RQ_MAP_PATH in the module's RegisterModule function.

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


Type

Description

Client

  • IIS 7.0 on Windows Vista

  • IIS 7.5 on Windows 7

  • IIS Express 7.5 on Windows XP, Windows Vista, Windows 7

  • IIS 8.0 on Windows 8 Client

Server

  • IIS 7.0 on Windows Server 2008

  • IIS 7.5 on Windows Server 2008 R2

  • IIS Express 7.5 on Windows Server 2003, Windows Server 2008, Windows Server 2008 R2

  • IIS 8.0 on Windows Server 2012

Product

IIS 7.0, IIS 7.5, IIS Express 7.5, IIS 8.0

Header

Httpserv.h

Community Additions

ADD
Show:
© 2015 Microsoft