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.
Berisi informasi pelacakan yang dikembalikan dari penyedia pelacakan.
Sintaks
struct HTTP_TRACE_EVENT{
LPCGUID pProviderGuid;
DWORD dwArea;
LPCGUID pAreaGuid;
DWORD dwEvent;
LPCWSTR pszEventName;
DWORD dwEventVersion;
DWORD dwVerbosity;
LPCGUID pActivityGuid;
LPCGUID pRelatedActivityGuid;
DWORD dwTimeStamp;
DWORD dwFlags;
DWORD cEventItems;
__field_ecount(cEventItems) HTTP_TRACE_EVENT_ITEM * pEventItems;
};
Anggota
| Nama anggota | Deskripsi |
|---|---|
pProviderGuid |
Yang LPCGUID berisi pengidentifikasi penyedia. Nilai yang mungkin termasuk, tetapi tidak terbatas pada, nilai di bagian Pelacakan GUID yang ditentukan dalam Konstanta Pelacakan. |
dwArea |
DWORD yang berisi area yang menarik untuk acara tersebut. Nilai area harus berupa bilangan bulat positif. |
pAreaGuid |
LPCGUID yang menunjukkan area yang diminati. |
dwEvent |
DWORD yang berisi pengidentifikasi unik peristiwa untuk penyedia peristiwa. |
pszEventName |
LPCWSTR yang berisi nama peristiwa. Nilai ini ditetapkan oleh penyedia peristiwa untuk memberikan deskripsi jenis peristiwa. |
dwEventVersion |
DWORD yang berisi versi peristiwa. Biasanya 0 atau 1, tetapi dapat berisi nilai bilangan bulat nonnegatif. |
dwVerbosity |
DWORD yang memetakan nilai numerik ke rekan verbose mereka (nilai 0 hingga 5 dipetakan ke Umum, FatalError, Kesalahan, Peringatan, Info, dan Verbose). |
pActivityGuid |
LPCGUID yang berisi pengidentifikasi permintaan unik. |
pRelatedActivityGuid |
LPCGUID yang berisi nilai untuk mengaitkan aktivitas terkait. Sebagian besar penyedia mengatur nilai ini ke NULL lalu memungkinkan IIS mengisi nilai sebelum mengirim peristiwa ke pendengar peristiwa. |
dwTimeStamp |
DWORD yang berisi stempel waktu opsional, yang diwakili oleh jumlah centang internal. |
dwFlags |
DWORD yang berisi bendera tambahan. Sebagian besar penyedia mengatur nilai ini ke HTTP_TRACE_EVENT_FLAG_STATIC_DESCRIPTIVE_FIELDS, dijelaskan di bagian Konstanta Pelacakan yang ditentukan dalam Konstanta Pelacakan. |
cEventItems |
DWORD yang berisi jumlah elemen dalam pEventItems array. |
pEventItems |
Array struktur Struktur HTTP_TRACE_EVENT_ITEM panjang cEventItems. |
Keterangan
Sebagian besar anggota HTTP_TRACE_EVENT peta struktur langsung ke peristiwa Pelacakan Peristiwa untuk Windows (ETW). Anggota dwArea dan pAreaGuid unik untuk IIS.
Kelas turunan CGlobalModule yang mendaftar untuk jenis peristiwa GL_TRACE_EVENT menerima pointer IGlobalTraceEventProvider sebagai parameter pada metode murni virtualCGlobalModule::OnGlobalTraceEvent. Anda kemudian dapat mengambil HTTP_TRACE_EVENT pointer dengan memanggil metode IGlobalTraceEventProvider::GetTraceEvent , tempat Anda menyediakan pointer ke alamat struktur NULL HTTP_TRACE_EVENT .
Untuk informasi selengkapnya, lihat Konstanta Pelacakan.
Anggota dwArea dan pAreaGuid berisi dua konstanta yang berbeda untuk area yang diminati untuk suatu acara.
Contoh
Contoh berikut mengisi HTTP_TRACE_EVENT struktur dan memanggil metode IHttpTraceContext::RaiseTraceEvent .
REQUEST_NOTIFICATION_STATUS
CMyHttpModule::OnBeginRequest(
IHttpContext* pHttpContext,
IHttpEventProvider* pProvider
)
{
HRESULT hr;
static long cnt;
InterlockedIncrement(&cnt); // keep track of how many times we are called
cnt++;
IHttpRequest *pRequest = pHttpContext->GetRequest();
PCWSTR url = pRequest->GetRawHttpRequest()->CookedUrl.pAbsPath;
OutputDebugStringW(url);
// return unless requesting a HTML file
if (!wcsstr(url, L".htm"))
return RQ_NOTIFICATION_CONTINUE;
IHttpResponse * pHttpResponse = pHttpContext->GetResponse();
// Return most times so we can still view content
if ((cnt % 5) || pHttpResponse == NULL)
return RQ_NOTIFICATION_CONTINUE;
TRC_MSG_FULL("HTML cnt = " << cnt);
static int insertPosCnt;
int insertPos = ++insertPosCnt % 2 - 1; // toggle between 0 and -1
// Use ostringstream to create some dynamic content
std::ostringstream os;
os << "<p /> first chunk callback count = " << cnt
<< " insertPos = " << insertPos << "<br />";
//
// WECbyRefChunk does all the work of inserting data into the response
//
hr = WECbyRefChunk(os, pHttpContext, pProvider, insertPos);
if (FAILED(hr))
return RQ_NOTIFICATION_FINISH_REQUEST;
os << "<br /> <b> Adding 2nd chunk in Bold </b> File insertPos = " << insertPos;
hr = WECbyRefChunk(os, pHttpContext, pProvider, insertPos);
if (FAILED(hr))
return RQ_NOTIFICATION_FINISH_REQUEST;
os << " <p /> Last (3rd) Chunk added with default append chunk GetCurrentThreadId = "
<< GetCurrentThreadId();
// any errors will be logged/handled in WECbyRefChunk
WECbyRefChunk(os, pHttpContext, pProvider);
// End additional processing, not because of error, but so another request
// (from a GIF or .css style sheet on the same HTML page)
// doesn't wipe out our WriteEntityChunkByReference. We can also get the
// WriteEntityChunkByReference prepended to our normal HTML page.
return RQ_NOTIFICATION_FINISH_REQUEST;
}
class My_Events
{
public:
static LPCGUID GetAreaGuid( VOID ){ // GUID for the event class
static const GUID AreaGuid =
{0xacade3b2,0xb7d7,0x4339,{0x95,0x6c,0x81,0x1b,0x4e,0xdb,0x1b,0x24}};
return &AreaGuid;
};
static LPCGUID GetProviderGuid( VOID ){ // GUID for the event Provider
static const GUID PrvderGuid =
// {EB881638-214A-4f2a-9B39-933770822D18}
{ 0xeb881638, 0x214a, 0x4f2a, { 0x9b, 0x39, 0x93, 0x37, 0x70, 0x82, 0x2d, 0x18 } };
;
return &PrvderGuid;
};
class My_COMPLETION
{
public:
static HRESULT RaiseEvent(
IHttpTraceContext * pHttpTraceContext,
LONG InsertPosition
)
//
// Raise Cmy_COMPLETION Event
//
{
HTTP_TRACE_EVENT Event;
Event.pProviderGuid = My_Events::GetProviderGuid();
Event.dwArea = 1;
Event.pAreaGuid = My_Events::GetAreaGuid();
Event.dwEvent = 1;
Event.pszEventName = L"NOTIFY_MY_CSTM_WECBR_EVNT";
Event.dwEventVersion = 2;
Event.dwVerbosity = 1;
Event.cEventItems = 1;
Event.pActivityGuid = NULL;
Event.pRelatedActivityGuid = NULL;
Event.dwTimeStamp = 0;
Event.dwFlags = HTTP_TRACE_EVENT_FLAG_STATIC_DESCRIPTIVE_FIELDS;
// pActivityGuid, pRelatedActivityGuid, Timestamp to be filled in by IIS
HTTP_TRACE_EVENT_ITEM Items[ 1 ];
Items[ 0 ].pszName = L"InsertPosition";
Items[ 0 ].dwDataType = HTTP_TRACE_TYPE_LONG; // mof type (object)
#pragma warning (disable:4312)
Items[ 0 ].pbData = (PBYTE) InsertPosition;
Items[ 0 ].cbData = 4;
Items[ 0 ].pszDataDescription = L"Insert Position";
Event.pEventItems = Items;
return pHttpTraceContext->RaiseTraceEvent( &Event );
};
};
};
Jika pelacakan permintaan gagal dikonfigurasi dengan benar, Anda akan melihat NOTIFY_MODULE_START peristiwa dan NOTIFY_MODULE_END di log jejak. Untuk informasi selengkapnya tentang pengelogan permintaan yang gagal, lihat Mengonfigurasi Pelacakan untuk Permintaan Yang Gagal di IIS 7.0. XML di bawah ini adalah NOTIFY_MODULE_START bagian dari log Pelacakan Permintaan Gagal. Sebagian besar data bergantung pada sistem dan tidak akan cocok dengan peristiwa di bawah ini.
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="WWW Server" Guid="{3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}"/>
<EventID>0</EventID>
<Version>1</Version>
<Level>5</Level>
<Opcode>1</Opcode>
<Keywords>0x100</Keywords>
<TimeCreated SystemTime="2007-08-27T21:10:30.186Z"/>
<Correlation ActivityID="{00000000-0000-0000-9800-0080000000FA}"/>
<Execution ProcessID="1308" ThreadID="3608"/>
<Computer>N2-IIS</Computer>
</System>
<EventData>
<Data Name="ContextId">{00000000-0000-0000-9800-0080000000FA}</Data>
<Data Name="ModuleName">A_raizeEvent</Data>
<Data Name="Notification">1</Data>
<Data Name="fIsPostNotification">false</Data>
<Data Name="fIsCompletion">false</Data>
</EventData>
<RenderingInfo Culture="en-US">
<Opcode>NOTIFY_MODULE_START</Opcode>
<Keywords>
<Keyword>RequestNotifications</Keyword>
</Keywords>
<freb:Description Data="Notification">BEGIN_REQUEST</freb:Description>
</RenderingInfo>
<ExtendedTracingInfo xmlns="http://schemas.microsoft.com/win/2004/08/events/trace">
<EventGuid>{002E91E3-E7AE-44AB-8E07-99230FFA6ADE}</EventGuid>
</ExtendedTracingInfo>
</Event>
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 | Httptrace.h |