IHttpApplication::GetModuleContextContainer, méthode
Retourne le conteneur de contexte de module pour l’application.
Syntaxe
virtual IHttpModuleContextContainer* GetModuleContextContainer(
VOID
) = 0;
Paramètres
Cette méthode ne prend aucun paramètre.
Valeur renvoyée
Pointeur vers un IHttpModuleContextContainer.
Remarques
La GetModuleContextContainer
valeur de retour de la méthode dépend de l’implémentation. Par défaut, l’implémentation actuelle crée un IDispensedHttpModuleContextContainer qui est synchronisé mais non distribué.
Remarques pour les implémenteurs
Les implémenteurs IHttpApplication sont responsables de la gestion de la mémoire avec ces données ; Par conséquent, IHttpApplication
les implémenteurs doivent créer un IDispensedHttpModuleContextContainer
pointeur au moment de la construction et contenir une private
référence à ce IDispensedHttpModuleContextContainer
pointeur pendant toute la IHttpApplication
durée de vie du pointeur. Lorsque la GetModuleContextContainer
méthode est appelée, vous devez effectuer une upcast et retourner ce même IDispensedHttpModuleContextContainer
pointeur. Lorsque le destructeur de la classe qui implémente l’interface IHttpApplication
est appelé, ce destructeur doit appeler la méthode IDispensedHttpModuleContextContainer::ReleaseContainer sur cette private
référence, puis définir cette référence sur NULL.
GetModuleContextContainer
ne doit pas retourner la valeur NULL. Si le conteneur interne a la valeur NULL, définissez ce conteneur interne sur la valeur lors de l’appel à IHttpServer::D ispenseContainer, puis retournez ce même conteneur.
Notes
Bien que les opérations de upcast implicite soient considérées comme sûres, envisagez d’utiliser un cast explicite pour la clarté du programme. Dans la mesure du possible, envisagez également d’utiliser l’opérateur dynamic_cast .
Remarques pour les appelants
IHttpApplication
les implémenteurs sont responsables de la gestion de la mémoire avec ces données ; Par conséquent, IHttpApplication
les clients ne doivent pas libérer, appeler delete
ou tenter de passer en baisse et appeler IDispensedHttpModuleContextContainer::ReleaseContainer
sur le pointeur retourné IHttpModuleContextContainer
lorsque ces données ne sont plus nécessaires.
Exemple
L’exemple de code suivant illustre une classe personnalisée nommée MyContainer
qui implémente l’interface IDispensedHttpModuleContextContainer
et une classe personnalisée nommée MyClass
qui implémente l’interface IHttpApplication
. MyClass
gère un MyContainer
pointeur pendant la durée de vie d’un MyClass
pointeur.
// 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;
};
Spécifications
Type | Description |
---|---|
Client | - IIS 7.0 sur Windows Vista - IIS 7.5 sur Windows 7 - IIS 8.0 sur Windows 8 - IIS 10.0 sur Windows 10 |
Serveur | - IIS 7.0 sur Windows Server 2008 - IIS 7.5 sur Windows Server 2008 R2 - IIS 8.0 sur Windows Server 2012 - IIS 8.5 sur Windows Server 2012 R2 - IIS 10.0 sur Windows Server 2016 |
Produit | - 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 |
En-tête | Httpserv.h |
Voir aussi
IHttpApplication, interface
IHttpConnection::GetModuleContextContainer, méthode
IHttpContext::GetModuleContextContainer, méthode
IHttpFileInfo::GetModuleContextContainer, méthode
IHttpFileMonitor::GetModuleContextContainer, méthode
IHttpSite::GetModuleContextContainer, méthode
IHttpUrlInfo::GetModuleContextContainer, méthode
IMetadataInfo::GetModuleContextContainer, méthode