Compartir a través de


IHttpContext::GetModuleContextContainer (Método)

Recupera el contenedor de contexto del módulo para el contexto actual.

Sintaxis

virtual IHttpModuleContextContainer* GetModuleContextContainer(  
   VOID  
) = 0;  

Parámetros

Este método no toma parámetros.

Valor devuelto

Puntero a una interfaz IHttpModuleContextContainer .

Comentarios

El valor devuelto del GetModuleContextContainer método depende de la implementación. De forma predeterminada, la implementación actual crea una interfaz IDispensedHttpModuleContextContainer sincronizada pero no dispensada.

Notas para los implementadores

Los implementadores de IHttpContext son responsables de la administración de memoria con estos datos; por lo tanto, IHttpContext los implementadores deben crear un IDispensedHttpModuleContextContainer puntero en la construcción y contener una private referencia a este IDispensedHttpModuleContextContainer puntero para la vida útil del IHttpContext puntero. Al llamar al GetModuleContextContainer método , debe realizar una difusión vertical y devolver este mismo IDispensedHttpModuleContextContainer puntero. Cuando se llama al destructor de la clase que implementa la IHttpContext interfaz , este destructor debe llamar al método IDispensedHttpModuleContextContainer::ReleaseContainer en esta private referencia y, a continuación, establecer esa referencia en NULL.

GetModuleContextContainer no debe devolver NULL. Si el contenedor interno es NULL, establezca este contenedor interno en el valor de la llamada a IHttpServer::D ispenseContainer y, a continuación, devuelva este mismo contenedor.

Nota

Aunque las operaciones de difusión implícitas se consideran seguras, considere la posibilidad de usar una conversión explícita para mayor claridad del programa. Considere también la posibilidad de usar el operador dynamic_cast siempre que sea posible.

Notas para autores de la llamada

IHttpContext Los implementadores son responsables de la administración de memoria con estos datos; por lo tanto, IHttpContext los clientes no deben liberar, llamar delete a ni intentar reducir la difusión y llamar IDispensedHttpModuleContextContainer::ReleaseContainer al puntero devuelto IHttpModuleContextContainer cuando estos datos ya no son necesarios.

Ejemplo

En el ejemplo de código siguiente se muestra una clase personalizada denominada MyContainer que implementa la IDispensedHttpModuleContextContainer interfaz y una clase personalizada denominada MyClass que implementa la IHttpContext interfaz . MyClass administra un MyContainer puntero durante la vigencia de un MyClass puntero.

// 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  
// IHttpContext interface.  
class MyClass : public IHttpContext  
{  
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 IHttpContext  
    // pure virtual methods if this class  
    // is not abstract.  
  
private:  
    // Specify a private  
    // IDispensedHttpModuleContextContainer  
    // pointer.  
    IDispensedHttpModuleContextContainer* m_container;  
};  

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

Consulte también

IHttpContext (interfaz)
IHttpApplication::GetModuleContextContainer (Método)
IHttpConnection::GetModuleContextContainer (Método)
IHttpFileInfo::GetModuleContextContainer (Método)
IHttpFileMonitor::GetModuleContextContainer (Método)
IHttpSite::GetModuleContextContainer (Método)
IHttpUrlInfo::GetModuleContextContainer (Método)
IMetadataInfo::GetModuleContextContainer (Método)