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 nilai pengembalian untuk pemberitahuan tingkat permintaan.
Sintaks
typedef enum REQUEST_NOTIFICATION_STATUS{
RQ_NOTIFICATION_CONTINUE,
RQ_NOTIFICATION_PENDING,
RQ_NOTIFICATION_FINISH_REQUEST
};
Anggota
| Nama anggota | Deskripsi |
|---|---|
RQ_NOTIFICATION_CONTINUE |
Menunjukkan bahwa IIS harus terus memproses pemberitahuan tingkat permintaan tambahan. |
RQ_NOTIFICATION_PENDING |
Menunjukkan bahwa pemberitahuan asinkron tertunda dan mengembalikan pemrosesan tingkat permintaan ke IIS. |
RQ_NOTIFICATION_FINISH_REQUEST |
Menunjukkan bahwa IIS telah selesai memproses pemberitahuan tingkat permintaan dan tidak boleh memproses pemberitahuan tingkat permintaan tambahan. |
Keterangan
REQUEST_NOTIFICATION_STATUS Anggota enumerasi digunakan sebagai nilai pengembalian dari pemberitahuan tingkat permintaan, dan anggota membantu mengontrol alur proses dalam alur pemrosesan permintaan terintegrasi. Misalnya, mengembalikan RQ_NOTIFICATION_CONTINUE dari handler pemberitahuan tingkat permintaan menginstruksikan IIS untuk terus memproses pemberitahuan tingkat permintaan tambahan, sedangkan kembali RQ_NOTIFICATION_FINISH_REQUEST dari handler pemberitahuan tingkat permintaan menginformasikan IIS bahwa pemrosesan tingkat permintaan selesai dan IIS tidak boleh memproses pemberitahuan tingkat permintaan tambahan. Modul yang menerapkan penanganan permintaan harus kembali RQ_NOTIFICATION_FINISH_REQUEST ketika terjadi kesalahan.
Contoh
Contoh berikut mengimplementasikan RQ_BEGIN_REQUEST handler. Jika permintaan bukan file HTML, contoh mengembalikan RQ_NOTIFICATION_CONTINUE dan pemrosesan normal terjadi. Ketika nilai penghitung memiliki sisa nol, file yang diminta digantikan oleh string yang dikembalikan oleh metode IHttpResponse::WriteEntityChunkByReference dan contoh mengembalikan RQ_NOTIFICATION_FINISH_REQUEST. Jika terjadi kesalahan, contoh mencatat kesalahan dan mengembalikan RQ_NOTIFICATION_FINISH_REQUEST.
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;
}
HRESULT hr = S_OK;
IHttpTraceContext * pTraceContext = pHttpContext->GetTraceContext();
hr = My_Events::My_COMPLETION::RaiseEvent(pTraceContext, InsertPosition);
if (FAILED(hr)) {
LOG_ERR_HR(hr, "RaiseEvent");
return hr;
}
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
Enumerasi Inti Server Web
Enumerasi GLOBAL_NOTIFICATION_STATUS