[英]Getting Header into file using ISAPI Filter
我試圖將整個原始標頭保存到文件中,但是每次嘗試寫入內容時,都會得到一個充滿full的文件。 我究竟做錯了什么?
DWORD CTryISAPIFilter::OnPreprocHeaders(CHttpFilterContext* httpContext,
PHTTP_FILTER_PREPROC_HEADERS headerInformation)
{
char buffer[4096];
DWORD bufferSize = sizeof(buffer);
BOOL HeaderBoolean = headerInformation->GetHeader(httpContext->m_pFC, "ALL_RAW", buffer, &bufferSize);
char * ptrIn = (char *) buffer;
std::string postData2 = ptrIn;
char * outputString = new char[4096];
int i = 0;
for(i=0;i<4096;i++){
outputString[i] = postData2[i];
}
outputString[i+1] = NULL;
std::ofstream outfile ("D:\\WebSites\\wwwroot\\test.txt",std::ios::app);
outfile << outputString << std::endl;
outfile.close();
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}
headerInformation->GetHeader()
返回成功嗎?
如果是這樣,它實際上要寫入buffer
多少(大概是通過放置在bufferSize
中的值告訴您的)
我懷疑GetHeader()
失敗,並且沒有任何內容寫入buffer
因為:
postData2
索引時,通常不會在字符串的末尾(無論如何,無論如何),都不會引發異常。 因此, buffer
顯然沒有'\\ 0'終止GetHeader()
如果成功, GetHeader()
將寫入該終止符)。 您需要檢查此故障並檢查GetLastError()
以獲得有關故障原因的更多信息。
更新:您的緩沖區可能不夠大。 有關如何適當調整緩沖區大小,請參見http://msdn.microsoft.com/zh-cn/magazine/cc163939.aspx 。
更新2:自從我完成Web工作以來已經有一段時間了,但是“ ALL_RAW”不是CGI風格的服務器環境變量,而不是標題嗎? 您不應該使用GetServerVariable()
而不是GetHeader()
來檢索它嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.