Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Definiert die Basisklasse für HTTP-Module auf globaler Ebene.
Syntax
class CGlobalModule
Methoden
In der folgenden Tabelle sind die Methoden aufgeführt, die von der CGlobalModule -Klasse verfügbar gemacht werden.
| Name | BESCHREIBUNG |
|---|---|
| OnGlobalApplicationPreload | deddc775-1ab0-492c-bda0-b32be5d4f4cc |
| OnGlobalApplicationResolveModules | Stellt die Methode dar, die ein GlobalApplicationResolveModules Ereignis behandelt, das auftritt, wenn IIS die registrierten Module auflöst. |
| OnGlobalApplicationStart | Stellt die Methode dar, die ein GlobalApplicationStart Ereignis behandelt, das auftritt, wenn IIS eine Anwendung startet. |
| OnGlobalApplicationStop | Stellt die Methode dar, die ein GlobalApplicationStop Ereignis behandelt, das auftritt, wenn IIS eine Anwendung herunterfährt. |
| OnGlobalCacheCleanup | Stellt die Methode zur Behandlung eines GlobalCacheCleanup-Ereignisses dar. |
| OnGlobalCacheOperation | Stellt die Methode dar, die ein GlobalCacheOperation Ereignis behandelt, das auftritt, wenn IIS einen cachebezogenen Vorgang ausführt. |
| OnGlobalConfigurationChange | Stellt die Methode dar, die ein GlobalConfigurationChange Ereignis behandelt, das auftritt, wenn eine Änderung an einer Konfigurationsdatei vorgenommen wird. |
| OnGlobalCustomNotification | Stellt die Methode dar, die ein GlobalCustomNotification Ereignis behandelt, das auftritt, wenn ein Modul eine benutzerdefinierte Benachrichtigung auslöst. |
| OnGlobalFileChange | Stellt die Methode dar, die ein GlobalFileChange Ereignis behandelt, das auftritt, wenn eine Datei innerhalb einer Website geändert wird. |
| OnGlobalHealthCheck | Stellt die Methode dar, die ein GlobalHealthCheck Ereignis behandelt, das auftritt, wenn ein integritätsbezogener Vorgang ausgeführt wird. |
| OnGlobalPreBeginRequest | Stellt die Methode dar, die ein GlobalPreBeginRequest Ereignis behandelt, das auftritt, bevor eine Anforderung in die Pipeline eintritt. |
| OnGlobalRSCAQuery | Stellt die Methode dar, die ein GlobalRSCAQuery Ereignis behandelt, das auftritt, wenn eine Run-Time Status- und Control-Abfrage ausgeführt wird. |
| OnGlobalStopListening | Stellt die Methode dar, die ein GlobalStopListening Ereignis behandelt, das auftritt, wenn IIS keine neuen Anforderungen mehr akzeptiert. |
| OnGlobalThreadCleanup | Stellt die Methode dar, die ein GlobalThreadCleanup Ereignis behandelt, das auftritt, wenn IIS einen Thread an den Threadpool zurückgibt. |
| OnGlobalTraceEvent | Stellt die Methode dar, die ein GlobalTraceEvent Ereignis behandelt, das auftritt, wenn ein Ablaufverfolgungsereignis ausgelöst wird. |
| Terminate | Stellt die Methode dar, die IIS aufruft, wenn ein globales Modul die Verarbeitung abgeschlossen hat. |
Abgeleitete Klassen
Diese Klasse enthält keine abgeleiteten Klassen.
Bemerkungen
Die CGlobalModule -Klasse ist die Basisklasse für HTTP-Module auf globaler Ebene. HTTP-Module auf globaler Ebene müssen eine Klasse enthalten, die von CGlobalModuleerbt. CGlobalModule definiert die Methoden, die IIS 7 aufruft, um Benachrichtigungen auf globaler Ebene zu verarbeiten, wenn Ereignisse auf globaler Ebene auftreten. Ein HTTP-Modul kann sich für bestimmte Ereignisse registrieren, indem eine Liste von Benachrichtigungen in der exportierten RegisterModule-Funktion eines Moduls definiert wird. Wenn ein Modul auf globaler Ebene die Verarbeitung abgeschlossen hat, sollte das Modul die CGlobalModule::Terminate-Methode verwenden, um Instanzen aus dem Arbeitsspeicher zu entfernen CGlobalModule .
Beispiel
Im folgenden Codebeispiel wird veranschaulicht, wie Sie ein einfaches HTTP-Modul auf globaler Ebene auf "Hallo Welt" erstellen. Das Modul definiert eine exportierte RegisterModule-Funktion, die eine instance einer Klasse erstellt, die von CGlobalModuleabgeleitet wird. Wenn die -Klasse nicht erstellt werden kann, wird die Funktion mit einem Fehlercode beendet. Andernfalls ruft die Funktion die IHttpModuleRegistrationInfo::SetRequestNotifications-Methode auf, um sich für die GL_PRE_BEGIN_REQUEST-Benachrichtigung zu registrieren.
Wenn eine GL_PRE_BEGIN_REQUEST Benachrichtigung auftritt, ruft IIS die CGlobalModule::OnGlobalPreBeginRequest-Methode des Moduls auf, um die Benachrichtigung zu verarbeiten. Die Methode ruft eine private Methode auf, um ein Ereignis in das Anwendungsprotokoll des Ereignisanzeige zu schreiben, und gibt dann GL_NOTIFICATION_CONTINUE zurück, um IIS zu benachrichtigen, die Verarbeitung anderer Benachrichtigungen fortzusetzen. Wenn die Verarbeitung abgeschlossen ist, ruft IIS die CGlobalModule::Terminate-Methode des Moduls auf, um die Klasse aus dem Arbeitsspeicher zu entfernen.
#define _WINSOCKAPI_
#include <windows.h>
#include <sal.h>
#include <httpserv.h>
// Create the module's global class.
class MyGlobalModule : public CGlobalModule
{
public:
// Process a GL_APPLICATION_START notification.
GLOBAL_NOTIFICATION_STATUS
OnGlobalPreBeginRequest(
IN IPreBeginRequestProvider * pProvider
)
{
UNREFERENCED_PARAMETER( pProvider );
WriteEventViewerLog( "Hello World!" );
return GL_NOTIFICATION_CONTINUE;
}
VOID Terminate()
{
// Remove the class from memory.
delete this;
}
MyGlobalModule()
{
// Open a handle to the Event Viewer.
m_hEventLog = RegisterEventSource( NULL,"IISADMIN" );
}
~MyGlobalModule()
{
// Test whether the handle for the Event Viewer is open.
if (NULL != m_hEventLog)
{
// Close the handle to the Event Viewer.
DeregisterEventSource( m_hEventLog );
m_hEventLog = NULL;
}
}
private:
// Create a handle for the event viewer.
HANDLE m_hEventLog;
// Define a method that writes to the Event Viewer.
BOOL WriteEventViewerLog(LPCSTR szNotification)
{
// Test whether the handle for the Event Viewer is open.
if (NULL != m_hEventLog)
{
// Write any strings to the Event Viewer and return.
return ReportEvent(
m_hEventLog,
EVENTLOG_INFORMATION_TYPE, 0, 0,
NULL, 1, 0, &szNotification, NULL );
}
return FALSE;
}
};
// Create the module's exported registration function.
HRESULT
__stdcall
RegisterModule(
DWORD dwServerVersion,
IHttpModuleRegistrationInfo * pModuleInfo,
IHttpServer * pGlobalInfo
)
{
UNREFERENCED_PARAMETER( dwServerVersion );
UNREFERENCED_PARAMETER( pGlobalInfo );
// Create an instance of the global module class.
MyGlobalModule * pGlobalModule = new MyGlobalModule;
// Test for an error.
if (NULL == pGlobalModule)
{
return HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY);
}
// Set the global notifications and exit.
return pModuleInfo->SetGlobalNotifications(
pGlobalModule, GL_PRE_BEGIN_REQUEST );
}
Ihr Modul muss die RegisterModule-Funktion exportieren. Sie können diese Funktion exportieren, indem Sie eine Moduldefinitionsdatei (.def) für Ihr Projekt erstellen, oder Sie können das Modul mithilfe des Schalters /EXPORT:RegisterModule kompilieren. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Erstellen eines Global-Level HTTP-Moduls mithilfe von nativem Code.
Sie können den Code optional kompilieren, indem Sie die __stdcall (/Gz) Aufrufkonvention verwenden, anstatt die Aufrufkonvention für jede Funktion explizit zu deklarieren.
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
Webserverkernklassen
Erstellen von Native-Code HTTP-Modulen
CHttpModule-Klasse