Freigeben über


IHttpUrlInfo::GetModuleContextContainer-Methode

Gibt den Kontextcontainer für die URL-spezifischen Informationen 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 Rückgabewert der Methode hängt von der Implementierung ab. Standardmäßig erstellt die aktuelle Implementierung eine IDispensedHttpModuleContextContainer-Schnittstelle , die synchronisiert, aber nicht verteilt wird.

Hinweise für Implementierer

IHttpUrlInfo-Implementierungen sind für die Speicherverwaltung mit diesen Daten verantwortlich. IHttpUrlInfo Daher sollten Implementierer einen IDispensedHttpModuleContextContainer Zeiger bei der Konstruktion erstellen und einen private Verweis auf diesen IDispensedHttpModuleContextContainer Zeiger für die Lebensdauer des IHttpUrlInfo Zeigers enthalten. Wenn Sie die GetModuleContextContainer -Methode aufrufen, sollten Sie denselben IDispensedHttpModuleContextContainer Zeiger upcasten und zurückgeben. Wenn Sie den Destruktor der Klasse aufrufen, die die IHttpUrlInfo Schnittstelle implementiert, sollte dieser Destruktor die IDispensedHttpModuleContextContainer::ReleaseContainer-Methode für diesen private Verweis aufrufen und diesen Verweis dann 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 angesehen werden, sollten Sie aus Gründen der Programmklarheit die Verwendung einer expliziten Umwandlung in Betracht ziehen. Erwägen Sie außerdem, nach Möglichkeit den operator dynamic_cast zu verwenden.

Hinweise für Aufrufer

IHttpUrlInfo-Implementierer sind für die Speicherverwaltung mit diesen Daten verantwortlich; IHttpUrlInfo Daher dürfen Clients den zurückgegebenen IHttpModuleContextContainer Zeiger nicht freigeben, aufrufen delete oder versuchen, downcasten und aufrufenIDispensedHttpModuleContextContainer::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 IHttpUrlInfo -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  
// IHttpUrlInfo interface.  
class MyClass : public IHttpUrlInfo  
{  
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 IHttpUrlInfo  
    // 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 unter 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 unter 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

IHttpUrlInfo-Schnittstelle
IHttpApplication::GetModuleContextContainer-Methode
IHttpConnection::GetModuleContextContainer-Methode
IHttpContext::GetModuleContextContainer-Methode
IHttpFileInfo::GetModuleContextContainer-Methode
IHttpFileMonitor::GetModuleContextContainer-Methode
IHttpSite::GetModuleContextContainer-Methode
IMetadataInfo::GetModuleContextContainer-Methode