Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menentukan kelas dasar untuk modul HTTP tingkat global.
Sintaks
class CGlobalModule
Metode
Tabel berikut mencantumkan metode yang diekspos oleh CGlobalModule kelas .
| Nama | Deskripsi |
|---|---|
| OnGlobalApplicationPreload | deddc775-1ab0-492c-bda0-b32be5d4f4cc |
| OnGlobalApplicationResolveModules | Mewakili metode yang akan menangani GlobalApplicationResolveModules peristiwa, yang terjadi ketika IIS menyelesaikan modul terdaftar. |
| Mulai Aplikasi OnGlobal | Mewakili metode yang akan menangani GlobalApplicationStart peristiwa, yang terjadi ketika IIS memulai aplikasi. |
| OnGlobalApplicationStop | Mewakili metode yang akan menangani GlobalApplicationStop peristiwa, yang terjadi ketika IIS mematikan aplikasi. |
| OnGlobalCacheCleanup | Mewakili metode yang akan menangani GlobalCacheCleanup peristiwa. |
| OnglobalCacheoperation | Mewakili metode yang akan menangani GlobalCacheOperation peristiwa, yang terjadi ketika IIS melakukan operasi terkait cache. |
| OnGlobalConfigurationChange | Mewakili metode yang akan menangani GlobalConfigurationChange peristiwa, yang terjadi ketika perubahan dilakukan pada file konfigurasi. |
| OnGlobalCustomNotification | Mewakili metode yang akan menangani GlobalCustomNotification peristiwa, yang terjadi ketika modul menaikkan pemberitahuan yang ditentukan pengguna. |
| OnGlobalFileChange | Mewakili metode yang akan menangani GlobalFileChange peristiwa, yang terjadi ketika file dalam situs Web diubah. |
| OnGlobalHealthCheck | Mewakili metode yang akan menangani GlobalHealthCheck peristiwa, yang terjadi ketika operasi terkait kesehatan dijalankan. |
| OnGlobalPreBeginRequest | Mewakili metode yang akan menangani GlobalPreBeginRequest peristiwa, yang terjadi sebelum permintaan memasuki alur. |
| OnGlobalRSCAQuery | Mewakili metode yang akan menangani GlobalRSCAQuery peristiwa, yang terjadi ketika kueri Status dan Kontrol Run-Time dijalankan. |
| OnGlobalStopListening | Mewakili metode yang akan menangani GlobalStopListening peristiwa, yang terjadi ketika IIS berhenti menerima permintaan baru. |
| OnGlobalThreadCleanup | Mewakili metode yang akan menangani GlobalThreadCleanup peristiwa, yang terjadi ketika IIS mengembalikan utas ke kumpulan utas. |
| OnglobalTraceEvent | Mewakili metode yang akan menangani GlobalTraceEvent peristiwa, yang terjadi ketika peristiwa pelacakan dinaikkan. |
| Hentikan | Mewakili metode yang dipanggil IIS ketika modul global telah menyelesaikan pemrosesan. |
Kelas Turunan
Kelas ini tidak berisi kelas turunan.
Keterangan
Kelas CGlobalModule ini adalah kelas dasar untuk modul HTTP tingkat global. Modul HTTP tingkat global harus berisi kelas yang mewarisi dari CGlobalModule. CGlobalModule menentukan metode yang dipanggil IIS 7 untuk menangani pemberitahuan tingkat global saat peristiwa tingkat global terjadi. Modul HTTP dapat mendaftar untuk peristiwa tertentu dengan menentukan daftar pemberitahuan dalam fungsi RegisterModule modul yang diekspor. Ketika modul tingkat global telah selesai diproses, modul harus menggunakan metode CGlobalModule::Terminate untuk menghapus CGlobalModule instans dari memori.
Contoh
Contoh kode berikut menunjukkan cara membuat modul HTTP tingkat global "Halo Dunia" sederhana. Modul mendefinisikan fungsi RegisterModule yang diekspor yang membuat instans kelas yang berasal dari CGlobalModule. Jika kelas tidak dapat dibuat, fungsi keluar dengan kode kesalahan; jika tidak, fungsi memanggil metode IHttpModuleRegistrationInfo::SetRequestNotifications untuk mendaftar pemberitahuan GL_PRE_BEGIN_REQUEST .
GL_PRE_BEGIN_REQUEST Ketika pemberitahuan terjadi, IIS memanggil metode CGlobalModule::OnGlobalPreBeginRequest modul untuk memproses pemberitahuan. Metode ini memanggil metode privat untuk menulis peristiwa ke log aplikasi Pemampil Peristiwa, lalu mengembalikan GL_NOTIFICATION_CONTINUE untuk memberi tahu IIS untuk terus memproses pemberitahuan lain. Saat pemrosesan selesai, IIS memanggil metode CGlobalModule::Terminate modul untuk menghapus kelas dari memori.
#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 );
}
Modul Anda harus mengekspor fungsi RegisterModule . Anda dapat mengekspor fungsi ini dengan membuat file definisi modul (.def) untuk proyek Anda, atau Anda dapat mengkompilasi modul dengan menggunakan sakelar /EXPORT:RegisterModule . Untuk informasi selengkapnya, lihat Panduan: Membuat Modul HTTP Global-Level Dengan Menggunakan Kode Asli.
Anda dapat secara opsional mengkompilasi kode dengan menggunakan __stdcall (/Gz) konvensi panggilan alih-alih secara eksplisit mendeklarasikan konvensi panggilan untuk setiap fungsi.
Persyaratan
| Jenis | Deskripsi |
|---|---|
| Klien | - IIS 7.0 di Windows Vista - IIS 7.5 di Windows 7 - IIS 8.0 di Windows 8 - IIS 10.0 pada Windows 10 |
| Server | - IIS 7.0 di Windows Server 2008 - IIS 7.5 di Windows Server 2008 R2 - IIS 8.0 di Windows Server 2012 - IIS 8.5 di Windows Server 2012 R2 - IIS 10.0 di Windows Server 2016 |
| Produk | - 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 |
Lihat juga
Kelas Inti Server Web
Membuat Modul HTTP Native-Code
Kelas CHttpModule