登入 HTTP API 時發生錯誤

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:820729
結論
本文將說明 HTTP API 的錯誤記錄功能。

HTTP 型應用程式中發生的某些錯誤會自動由 HTTP API 處理,而不是傳回應用程式處理。發生此行為的原因是,這類錯誤的頻率阻塞事件記錄檔或應用程式處理常式。

下列主題將說明 HTTP API 錯誤記錄的不同層面。
  • 設定 HTTP API errorlogging
    登錄設定值會控制 HTTP API 記錄錯誤、 themaximum 允許記錄檔的大小,以及記錄檔的位置。
  • 記錄格式的 HTTP APIerror
    HTTP API 會使用 theWorld 寬資訊網協會 (W3C) 記錄檔慣例,來建立符合的記錄檔。您可以使用標準工具剖析這些記錄檔。不過,與 W3C 記錄檔,不同的是 HTTP API 記錄檔執行 notcontain 資料行名稱。
  • HTTP API 所記錄的錯誤類型
    HTTP API 會記錄許多常見的錯誤。
解決方案

設定 HTTP API 錯誤記錄

HTTP \Parameters機碼之下的三個登錄值會控制 HTTP API 的錯誤記錄。這些機碼位於下列登錄機碼︰
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
附註較新版本的 Windows 作業系統可能會變更位置和設定值的形式。

您必須擁有系統管理員/本機系統認證,來變更登錄值,並檢視或變更記錄檔和包含它們的資料夾。

HTTP API 驅動程式啟動時,會讀取登錄值中的組態資訊。因此,如果您變更設定時,您必須停止,而且然後重新啟動驅動程式,以讀取新的值。若要這樣做,請鍵入下列的 [主控台] 指令︰
net stop http
net start http
下列命名慣例用來命名記錄檔 ︰
檢查 httperr + 序號 .log +
範例︰ httperr4.log
記錄檔達到 ErrorLogFileTruncateSize 登錄值指定的最大大小時,記錄檔即會循環。這個值不能小於一個百萬位元組 (MB)。

如果錯誤記錄的設定不正確,或是 HTTP API 寫入記錄檔時,就會發生任何一種失敗,則 HTTP API 會使用事件記錄來通知系統管理員並沒有發生錯誤記錄。

下表描述登錄設定值。
登錄值描述
EnableErrorLoggingDWORD,您可以設定為 TRUE 以啟用錯誤記錄,或為 FALSE 以停用它。預設值為 TRUE。
ErrorLogFileTruncateSizeDWORD ,以位元組為單位指定的錯誤記錄檔大小上限。預設值是 1 MB (都是 0x100000)。

附註指定的值不得小於預設值。
ErrorLoggingDir字串,指定 HTTP API 要將其記錄檔放置的資料夾。

HTTP API 會在指定的資料夾中建立子資料夾 HTTPERR,然後將記錄檔儲存在子資料夾中。這個子資料夾和記錄檔會收到相同的權限設定。系統管理員和本機系統帳戶有完整存取權。其他使用者不能存取。

以下是在登錄中未指定資料夾時的預設資料夾︰
%SystemRoot%\System32\LogFiles

附註ErrorLoggingDir的字串值必須是完整的本機路徑。不過,它可以包含 %systemroot%。無法使用網路磁碟機或網路共用。

回到頁首

HTTP API 錯誤記錄檔的格式

一般而言,HTTP API 錯誤記錄檔都與 W3C 錯誤記錄檔有相同的格式,不同之處在於 HTTP API 錯誤記錄檔不包含欄標題。每一行的 HTTP API 錯誤記錄檔會記錄一個錯誤。欄位出現在特定的順序。單一空格字元 (0x0020) 用來分隔每個欄位與先前的欄位。在每個欄位中,加上 (0x002B) 取代空格字元、定位點和無法列印的控制字元。

下面的表格識別欄位和錯誤記錄檔記錄中欄位的順序。
欄位描述
日期[日期] 欄位會遵循 W3C 格式。這個欄位是根據國際標準時間 (UTC)。[日期] 欄位永遠是 YYYY-MM-DD 格式的十個字元例如,2003 年 5 月 1 日表示為 2003-05-01。
時間[時間] 欄位會遵循 W3C 格式。這個欄位根據 UTC。[時間] 欄位永遠是 MM:HH:SS 形式的八個字元。例如,下午 5:30 (UTC) 被表示為 17:30:00。
用戶端 IP 位址受影響的用戶端的 IP 位址。此欄位中的值可以是 IPv4 位址或 IPv6 位址。如果用戶端 IP 位址是 IPv6 位址,[ScopeId] 欄位也會包含於地址中。
用戶端連接埠受影響的用戶端連接埠編號。
伺服器 IP 位址受影響的伺服器 IP 位址。此欄位中的值可以是 IPv4 位址或 IPv6 位址。如果伺服器的 IP 位址是 IPv6 位址,[ScopeId] 欄位也會包含的地址。
伺服器連接埠受影響的伺服器通訊埠編號。
通訊協定版本正在使用的通訊協定版本。

如果連線已經無法剖析內容已足夠用來決定的通訊協定版本,連字號 (0x002D) 會使用 placeholderfor 當做空白的欄位。

如果主要版本號碼或次要版本號碼的剖析 isgreater 於或等於 10,版本會被記錄為 HTTP /?。 (章節)。
Verb動詞命令狀態,剖析階段的最後要求。包含未知的動詞命令,但任何超過 255 個位元組的動詞命令會被截斷成 此長度。如果有不可使用的動詞命令,連字號 (0x002D) 會用於做為空白欄位的預留位置。
CookedURL + 查詢與其相關的 URL 和任何查詢皆會記錄為一個欄位,並以問號 (0x3F) 分隔。這個欄位會被截斷為 4096 位元組的長度限制。

如果這個 URL 已剖析 ("cooked"),它會以本機程式碼頁面轉換記錄,並會被視為 Unicode 欄位。

如果這個 URL 已經不剖析 (「 替") 在 thetime 的記錄,便會複製,沒有任何 Unicode 轉換。

如果 HTTP API 無法剖析這個 URL,hyphen(0x002D) 是當做預留位置使用空的欄位。
通訊協定狀態通訊協定狀態不能大於 999。

如果使用 requestis 來回應的通訊協定狀態,它會記錄在此欄位。

如果無法使用通訊協定狀態,則 hyphen(0x002D) 會空欄位,做為預留位置上使用。
網站識別碼不用於此版本的 HTTP API。版面配置區連字號 (0x002D) 永遠會出現在此欄位中。
原因片語這個欄位會包含識別記錄的錯誤類型的字串。這個欄位永遠不會保留為空白。
佇列名稱這是要求的佇列名稱。
以下所列的範例來自 HTTP API 錯誤記錄檔 ︰
2002-07-05 18:45:09 172.31.77.6 2094 172.31.77.6 80 HTTP/1.1 GET /qos/1kbfile.txt 503 – ConnLimit 2002-07-05 19:51:59 127.0.0.1 2780 127.0.0.1 80 HTTP/1.1 GET /ThisIsMyUrl.htm 400 – Hostname 2002-07-05 19:53:00 127.0.0.1 2894 127.0.0.1 80 HTTP/2.0 GET / 505 - Version_N/S 2002-07-05 20:06:01 172.31.77.6 64388 127.0.0.1 80 - - - - - Timer_MinBytesPerSecond
回到頁首

HTTP API 所記錄的錯誤種類

HTTP API 會記錄回應給用戶端、 連線逾時、 孤立要求及捨棄處理不正確的連線的錯誤。

下列清單區分 HTTP API 所記錄的錯誤類型 ︰
  • 回應給用戶端HTTP API 會傳送錯誤回應至用戶端,比方說,在最後一個接收到的要求中發生剖析錯誤,造成 400 錯誤。HTTP API 傳送錯誤回應後,它就會關閉連線。
  • 連線逾時HTTP API 會使連線逾時。如果要求正在擱置中 whenthe 連接逾時,,要求用來提供失去連接錯誤記錄檔中的相關資訊。
  • 孤立要求使用者模式處理程序意外停止時,仍然有佇列的要求路由到該處理序。HTTP API 會將孤立要求記錄到錯誤記錄檔中。
特定的錯誤類型都會以原因片語字串來指定,永遠顯示為每個錯誤行的最後一個欄位。下面表格識別 HTTP API 原因片語。
原因片語描述

AppOffline發生服務無法使用錯誤 (HTTP 錯誤 503)。服務目前無法使用,因為應用程式錯誤導致應用程式離線。
AppPoolTimer發生服務無法使用錯誤 (HTTP 錯誤 503)。服務目前無法使用,因為應用程式集區處理序太忙碌而無法處理要求。
AppShutdown發生服務無法使用錯誤 (HTTP 錯誤 503)。服務目前無法使用,因為應用程式自動關閉以回應系統管理員原則。
BadRequest處理要求時發生剖析錯誤。
Client_Reset要求被指派給背景工作處理序之前,已關閉用戶端與伺服器之間的連線。這個行為的最常見的原因是在用戶端過早關閉伺服器的連線。
Connection_Abandoned_By_AppPool來自應用程式集區的工作者處理序已意外地結束,或關閉控點使擱置的要求孤立。
Connection_Abandoned_By_ReqQueue來自應用程式集區的工作者處理序已意外地結束,或關閉控點使擱置的要求孤立。僅適用於 Windows Vista 及更新版本及 Windows Server 2008 及更新版本。
Connection_Dropped伺服器傳送其最終回應封包之前,已關閉用戶端與伺服器之間的連線。這個行為的最常見的原因是在用戶端過早關閉伺服器的連線。
Connection_Dropped_List_Full用戶端與伺服器之間的捨棄連線清單已滿。僅適用於 Windows Vista 及更新版本及 Windows Server 2008 及更新版本。
ConnLimit發生服務無法使用錯誤 (HTTP 錯誤 503)。服務目前無法使用,因為已經達到或超過網站層級的連線限制。
Connections_Refused核心 NonPagedPool 記憶體已捨棄低於 20 MB,並且 http.sys 已停止接收新的連線
Disabled發生服務無法使用錯誤 (HTTP 錯誤 503)。服務目前無法使用,因為系統管理員已使應用程式離線。
EntityTooLarge實體超過所允許的最大大小。
FieldLength欄位長度限制已經超過。
Forbidden剖析時發現禁止的項目或順序。
Header標頭中發生剖析錯誤。
Hostname處理主機名稱時發生剖析錯誤。
Internal發生內部伺服器錯誤 (HTTP 錯誤 500)。
Invalid_CR/LF發生不合法的歸位字元或換行字元。
LengthRequired遺失所需的長度值。
N/A發生服務無法使用錯誤 (HTTP 錯誤 503)。服務目前無法使用,因為發生內部錯誤 (例如記憶體配置失敗或 URL 預約清單衝突)。
N/I發生未實作的錯誤 (HTTP 錯誤 501),或發生服務無法使用錯誤 (HTTP 錯誤 503),因為未知的傳輸編碼方式。
Number處理數字時,發生剖析錯誤。
Precondition遺失必要的先決條件。
QueueFull發生服務無法使用錯誤 (HTTP 錯誤 503)。服務目前無法使用,因為應用程式要求佇列已滿。
RequestLength要求長度限制已經超過。
Timer_AppPool連線過期,因為要求在應用程式集區佇列中等待取消伺服器應用程式的佇列及處理時,等待時間太長。此逾時期間是ConnectionTimeout。根據預設,這個值是設為 2 分鐘。
Timer_ConnectionIdle連線過期,並保持閒置。預設的 ConnectionTimeout 期間是 2 分鐘。
Timer_EntityBody要求實體主體抵達之前,連線已過期。要求顯然有實體主體時,HTTP API 會開啟Timer_EntityBody 計時器。首先,此計時器的限制設定為 ConnectionTimeout 值 (一般為兩分鐘)。每次在此要求上收到資料指示時,HTTP API 會重設計時器使連線多兩分鐘 (或任何在ConnectionTimeout 中指定的一切)。
Timer_HeaderWait連線過期,因為要求的標頭剖析所花的時間超過兩分鐘的預設限制。
Timer_MinBytesPerSecond連線過期,因為用戶端沒有以合理的速度收到回應。回應的傳送速率低於 240 位元組數/秒的預設值。這可以藉由 MinFileBytesPerSec 中繼資料庫屬性控制。
Timer_ReqQueue連線過期,因為要求在應用程式集區佇列中等待取消伺服器應用程式的佇列時,等待時間太長。此逾時期間是ConnectionTimeout。根據預設,這個值是設為 2 分鐘。僅適用於 Windows Vista 及更新版本及 Windows Server 2008 及更新版本。
Timer_Response保留。目前無法使用。
Timer_SslRenegotiation連線過期,因為用戶端與伺服器之間的 SSL 交涉所花時間超過兩分鐘的預設逾時。
URL處理 URL 時,發生剖析錯誤。
URL_LengthURL 超過允許之大小上限。
Verb處理動詞命令時,發生剖析錯誤。
Version_N/S發生不支援版本錯誤 (HTTP 錯誤 505)。

回到頁首
参考
如需有關如何新增額外的記錄欄位以記錄 IIS HTTP 錯誤的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件 ︰
832975 其他屬性現在已有登入檢查 Httperr #.log 檔案,在 IIS 6.0 和 IIS 7.0

警告:本文為自動翻譯

內容

文章識別碼:820729 - 最後檢閱時間:08/05/2016 06:33:00 - 修訂: 11.0

Windows Server 2008 R2 Standard, Windows Server 2008 R2 Enterprise, Windows Server 2008 Enterprise, Windows Server 2012 R2 Standard, Windows Server 2012 R2 Datacenter, Windows Server 2012 R2 Essentials, Windows Server 2012 R2 for Embedded Systems, Windows Server 2012 R2 Foundation, Windows Server 2012 Standard, Windows Server 2012 Datacenter, Windows Server 2012 Essentials, Windows 10, Windows 10 Enterprise, released in July 2015, Windows 10 Pro, released in July 2015, Windows 10 Version 1511, Windows 8.1, Windows 8.1 Enterprise, Windows 8.1 Pro, Windows 8, Windows 8 Pro, Windows 8 Enterprise, Windows 7 Professional, Windows 7 Enterprise

  • kbhttphandlers kbhttp kbapi kberrmsg kbinfo kbmt KB820729 KbMtzh
意見反應