Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Удаляет контейнер контекста, если он раздается.
Синтаксис
virtual VOID ReleaseContainer(
VOID
) = 0;
Параметры
Этот метод не принимает параметров.
Потокобезопасность
Метод ReleaseContainer не является потокобезопасном для разработчиков, которые распределяются.
Комментарии
Поведение этого метода зависит от реализации. В качестве руководства следует использовать следующие сведения, но они могут быть неправильными во всех сценариях:
Большинство разработчиков объявляют закрытое
Booleanзначение с именемdispensed; значение по умолчанию —false, а поведение по умолчанию —dispensedникогда не задано значениеtrue. Однако если для реализации задано значениеdispensedtrue, приReleaseContainerвызове вызывается указатель IDispensedHttpModuleContextContainerdelete.ReleaseContainerВ противном случае — пустая операция.Если
deleteвызывается ,IDispensedHttpModuleContextContainerперечисляет внутренний массив указателей IHttpStoredContext и вызывает метод IHttpStoredContext::CleanupStoredContext для всех указателей, добавленных ранее с помощью метода IHttpModuleContextContainer::SetModuleContext . Затем контейнер контекста удаляет память массива в куче и задает для этого массива значение NULL.
Пример
В следующем примере показан пользовательский класс с именем MyContainer , реализующий IDispensedHttpModuleContextContainer интерфейс . Здесь также показан пользовательский класс с именем MyClass , реализующий метод с именем GetModuleContextContainer. MyClass управляет указателем MyContainer в течение времени существования указателя MyClass .
// 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;
};
// Create the MyClass class.
class MyClass
{
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: a static upcast
// IDispensedHttpModuleContextContainer.
virtual IHttpModuleContextContainer*
GetModuleContextContainer(VOID)
{
return static_cast<IHttpModuleContextContainer*>
(m_container);
}
// Implement additional IHttpUrlInfo
// pure virtual methods if this class
// is not abstract.
private:
// Specify a private
// IDispensedHttpModuleContextContainer
// pointer.
IDispensedHttpModuleContextContainer* m_container;
};
Требования
| Тип | Описание |
|---|---|
| клиент | — IIS 7.0 в Windows Vista — IIS 7.5 в Windows 7 — IIS 8.0 в Windows 8 — IIS 10.0 в Windows 10 |
| Сервер | — IIS 7.0 в Windows Server 2008 — IIS 7.5 в Windows Server 2008 R2 — IIS 8.0 в Windows Server 2012 — IIS 8.5 в Windows Server 2012 R2 — IIS 10.0 в Windows Server 2016 |
| Продукт | — 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 |
| Заголовок | Httpserv.h |
См. также:
Интерфейс IDispensedHttpModuleContextContainer
Метод IHttpApplication::GetModuleContextContainer
Метод IHttpConnection::GetModuleContextContainer
Метод IHttpContext::GetModuleContextContainer
Метод IHttpFileInfo::GetModuleContextContainer
Интерфейс IHttpModuleContextContainer
Метод IHttpSite::GetModuleContextContainer
Метод IHttpUrlInfo::GetModuleContextContainer
Метод IMetadataInfo::GetModuleContextContainer