IHttpApplication::GetModuleContextContainer-Methode
Gibt den Modulkontextcontainer für die Anwendung zurück.
Syntax
virtual IHttpModuleContextContainer* GetModuleContextContainer(
VOID
) = 0;
Parameter
Diese Methode nimmt zwei Parameter entgegen.
Rückgabewert
Ein Zeiger auf einen IHttpModuleContextContainer.
Bemerkungen
Der GetModuleContextContainer
Methodenrückgabewert ist von der Implementierung abhängig. Standardmäßig erstellt die aktuelle Implementierung einen IDispensedHttpModuleContextContainer , der synchronisiert, aber nicht verteilt wird.
Hinweise für Implementierer
IHttpApplication-Implementierer sind für die Speicherverwaltung mit diesen Daten verantwortlich. IHttpApplication
Daher sollten Implementierer bei der Konstruktion einen IDispensedHttpModuleContextContainer
Zeiger erstellen und einen private
Verweis auf diesen IDispensedHttpModuleContextContainer
Zeiger für die Lebensdauer des IHttpApplication
Zeigers enthalten. Wenn die GetModuleContextContainer
-Methode aufgerufen wird, sollten Sie denselben IDispensedHttpModuleContextContainer
Zeiger neu erstellen und zurückgeben. Wenn der Destruktor der Klasse aufgerufen wird, die die IHttpApplication
Schnittstelle implementiert, sollte dieser Destruktor die IDispensedHttpModuleContextContainer::ReleaseContainer-Methode für diesen private
Verweis aufrufen und dann diesen Verweis auf NULL festlegen.
GetModuleContextContainer
sollte NULL nicht zurückgeben. Wenn der interne Container NULL ist, legen Sie diesen internen Container auf den Wert für den Aufruf von IHttpServer::D ispenseContainer fest, und geben Sie dann denselben Container zurück.
Hinweis
Obwohl implizite Upcastvorgänge als sicher gelten, sollten Sie für die Programmklarheit die Verwendung einer expliziten Umwandlung in Erwägung ziehen. Erwägen Sie nach Möglichkeit auch die Verwendung des operator dynamic_cast .
Hinweise für Aufrufer
IHttpApplication
Implementierer sind für die Speicherverwaltung mit diesen Daten verantwortlich; IHttpApplication
Daher dürfen Clients den zurückgegebenen Zeiger nicht freigeben, aufrufen delete
oder versuchen, den zurückgegebenen IHttpModuleContextContainer
Zeiger herunterzusenden und aufzurufenIDispensedHttpModuleContextContainer::ReleaseContainer
, wenn diese Daten nicht mehr benötigt werden.
Beispiel
Das folgende Codebeispiel veranschaulicht eine benutzerdefinierte Klasse namens, MyContainer
die die IDispensedHttpModuleContextContainer
Schnittstelle implementiert, und eine benutzerdefinierte Klasse namens MyClass
, die die IHttpApplication
Schnittstelle implementiert. MyClass
verwaltet einen MyContainer
Zeiger während der Lebensdauer eines MyClass
Zeigers.
// The MyContainer class implements the
// IDispensedHttpModuleContextContainer interface.
class MyContainer : public IDispensedHttpModuleContextContainer
{
public:
// The MyContainer method is the public
// constructor for the MyContainer class.
// Make this method protected if the
// MyContainer class is abstract.
// dispensed: true if the container should
// call delete this when the ReleaseContainer
// method is called.
MyContainer(bool dispensed = false)
: m_dispensed(dispensed)
{
}
// The ReleaseContainer method
// calls delete this if this container
// is dispensed.
virtual VOID ReleaseContainer(VOID)
{
if (m_dispensed)
{
delete this;
}
}
// Implement additional
// IDispensedHttpModuleContextContainer
// pure virtual methods if this class
// is not abstract.
private:
// The MyContainer method is the private
// destructor for the MyContainer class.
// Make this method protected and virtual
// if the MyContainer class expects
// to be a class of derivation. This method
// should not be public because
// IDispensedHttpModuleContextContainer pointers
// should be disposed externally only by
// calling the ReleaseContainer method.
~MyContainer()
{
}
// Specify a Boolean value for dispensing.
bool m_dispensed;
};
// The MyClass class implements the
// IHttpApplication interface.
class MyClass : public IHttpApplication
{
public:
// The MyClass method is the public
// constructor for the MyClass class.
MyClass()
{
m_container = new MyContainer;
}
// The MyClass method is the
// public virtual destructor
// for the MyClass class. This destructor
// calls ReleaseContainer on the internal
// IDispensedHttpModuleContextContainer
// pointer and sets that pointer to NULL.
virtual ~MyClass()
{
m_container->ReleaseContainer();
m_container = NULL;
}
// The GetModuleContextContainer method
// returns an IHttpModuleContextContainer
// pointer.
// return: an explicit upcast
// IDispensedHttpModuleContextContainer
// pointer for readability.
virtual IHttpModuleContextContainer*
GetModuleContextContainer(VOID)
{
return (IHttpModuleContextContainer*)m_container;
}
// Implement additional IHttpApplication
// pure virtual methods if this class
// is not abstract.
private:
// Specify a private
// IDispensedHttpModuleContextContainer
// pointer.
IDispensedHttpModuleContextContainer* m_container;
};
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 |
Weitere Informationen
IHttpApplication-Schnittstelle
IHttpConnection::GetModuleContextContainer-Methode
IHttpContext::GetModuleContextContainer-Methode
IHttpFileInfo::GetModuleContextContainer-Methode
IHttpFileMonitor::GetModuleContextContainer-Methode
IHttpSite::GetModuleContextContainer-Methode
IHttpUrlInfo::GetModuleContextContainer-Methode
IMetadataInfo::GetModuleContextContainer-Methode