共用方式為


針對 Azure App Service 和 IIS 上的 ASP.NET Core 進行疑難排解

作者:Justin Kotalik

本文提供常見應用程式啟動錯誤的相關資訊,以及如何在應用程式部署至 Azure App Service 或 IIS 時,診斷錯誤的指示:

應用程式啟動錯誤
說明常見的啟動 HTTP 狀態碼案例。

針對 Azure App Service 進行疑難排解
提供應用程式部署至 Azure App Service 的疑難排解建議。

針對 IIS 進行疑難排解
針對應用程式部署到 IIS 或在 IIS Express 上本機執行提供疑難排解建議。 本指南同時適用於 Windows Server 和 Windows 桌面部署。

清除套件快取
說明在執行主要升級或變更套件版本時,當不一致套件中斷應用程式的情況下,該怎麼做。

其他資源
列出其他疑難排解主題。

應用程式啟動錯誤

在 Visual Studio 中,ASP.NET Core 專案預設伺服器為 Kestrel。 Visual Studio 可以設定為使用 IIS Express。 在本機偵錯時發生的「502.5 - 處理序失敗」或「500.30 - 啟動失敗」可以使用本主題中的建議,利用 IIS Express 在該位置進行診斷。

403.14 禁止

應用程式無法啟動。 記錄下列錯誤:

The Web server is configured to not list the contents of this directory.

錯誤通常是由主控系統上的部署中斷所造成,其中包括下列任何案例:

  • 應用程式部署到主控系統上的錯誤資料夾。
  • 部署處理序無法將所有應用程式的檔案和資料夾移至主控系統上的部署資料夾。
  • 部署中遺漏 web.config 檔案,或 web.config 檔案內容格式不正確。

執行下列步驟:

  1. 從主控系統上的部署資料夾刪除所有檔案和資料夾。
  2. 使用您一般的部署方法 (例如 Visual Studio、PowerShell 或手動部署),將應用程式的 publish 資料夾內容重新部署至主控系統:
    • 確認部署中有 web.config 檔案,且其內容正確無誤。
    • 在 Azure App Service 上主控時,請確認應用程式已部署至 D:\home\site\wwwroot 資料夾。
    • 當應用程式由 IIS 主控時,請確認應用程式已部署至 [IIS 管理員] 的 [基本設定] 中顯示的 IIS [實體路徑]
  3. 比較主控系統上的部署與專案 publish 資料夾的內容,以確認所有應用程式的檔案和資料夾皆已部署。

如需已發佈 ASP.NET Core 應用程式配置的詳細資訊,請參閱 ASP.NET Core 目錄結構。 如需關於 web.config 檔案詳細資訊,請參閱適用於 IIS 的 ASP.NET Core 模組 (ANCM)

500 內部伺服器錯誤

應用程式啟動,但有錯誤導致伺服器無法完成要求。

此錯誤是在啟動或建立回應時,在應用程式的程式碼內發生。 回應可能未包含任何內容,或是回應可能在瀏覽器中以「500 內部伺服器錯誤」的形式出現。 「應用程式事件記錄檔」通常會指出該應用程式已正常啟動。 從伺服器的觀點來看,這是正確的。 應用程式已啟動,但無法產生有效的回應。 請在伺服器上於命令提示字元中執行應用程式或啟用 ASP.NET Core 模組 stdout 記錄檔,以針對問題進行疑難排解。

當 .NET Core 裝載套件組合未安裝或損毀時,也可能會發生此錯誤。 安裝或修復 .NET Core 裝載套件組合 (適用於 IIS) 或 Visual Studio (適用於 IIS Express) 安裝,可能會修正此問題。

500.0 同處理序處理常式載入失敗

背景工作處理序失敗。 應用程式未啟動。

載入 ASP.NET Core 模組元件時發生未知的錯誤。 請採取下列其中一個動作:

500.30 同處理序啟動失敗

背景工作處理序失敗。 應用程式未啟動。

ASP.NET Core 模組嘗試啟動 .NET Core CLR 同處理序,但無法啟動。 通常從應用程式事件記錄檔和 ASP.NET Core 模組 stdout 記錄檔中的項目,即可判斷啟動失敗的原因。

常見失敗狀況:

  • 因為目標 ASP.NET Core 共用架構的版本不存在,而導致應用程式設定錯誤。 請檢查安裝在目標機器上的 ASP.NET Core 共用架構版本為何。
  • 使用 Azure Key Vault 時,缺少 Key Vault 的權限。 檢查目標 Key Vault 中的存取原則,以確保授與正確的權限。

500.31 ANCM 找不到原生相依性

背景工作處理序失敗。 應用程式未啟動。

ASP.NET Core 模組嘗試啟動 .NET Core 執行階段同處理序,但無法啟動。 此啟動失敗的最常見原因是當 Microsoft.NETCore.AppMicrosoft.AspNetCore.App 執行階段未安裝時。 如果應用程式部署至目標 ASP.NET Core 3.0,但電腦上無該版本,就會發生此錯誤。 範例錯誤訊息如下:

The specified framework 'Microsoft.NETCore.App', version '3.0.0' was not found.
  - The following frameworks were found:
      2.2.1 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview5-27626-15 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview6-27713-13 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview6-27714-15 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview6-27723-08 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]

錯誤訊息會列出所有已安裝 .NET Core 版本和應用程式所要求的版本。 若要修正此錯誤,請使用以下其中一種方法:

  • 在電腦上安裝適當的 .NET Core 版本。
  • 將應用程式的目標 .NET Core 版本變更為電腦上版本。
  • 將應用程式發佈為自封式部署

在開發過程中執行時 (ASPNETCORE_ENVIRONMENT 環境變數設定為 Development),特定的錯誤會寫入至 HTTP 回應。 處理序啟動失敗的原因也會列在應用程式事件記錄檔中。

500.32 ANCM 無法載入 dll

背景工作處理序失敗。 應用程式未啟動。

此錯誤最常見原因是針對不相容的處理器架構發佈應用程式。 如果背景工作處理序執行為 32 位元應用程式,而此應用程式已發佈至目標 64 位元,就會發生此錯誤。

若要修正此錯誤,請使用以下其中一種方法:

  • 針對相同的處理器架構,將應用程式重新發佈為背景工作處理序。
  • 將應用程式發佈為架構相依部署

500.33 ANCM 要求處理常式載入失敗

背景工作處理序失敗。 應用程式未啟動。

應用程式未參考 Microsoft.AspNetCore.App 架構。 ASP.NET Core 模組只裝載以 Microsoft.AspNetCore.App 架構為目標的應用程式。

若要修正這個錯誤,請確認應用程式以 Microsoft.AspNetCore.App 架構為目標。 檢查 .runtimeconfig.json 以驗證應用程式是否以該架構為目標。

500.34 ANCM 不支援混合式裝載模型

背景工作處理序無法在相同的程序中執行同處理序應用程式和跨處理序應用程式。

若要修正這個錯誤,請在不同的 IIS 應用程式集區中執行應用程式。

500.35 ANCM 同一程序中有多個同處理序應用程式

背景工作處理序無法在同一個處理序中執行多個同處理序應用程式。

若要修正這個錯誤,請在不同的 IIS 應用程式集區中執行應用程式。

500.36 ANCM 跨處理序處理常式載入失敗

跨處理序要求處理常式 aspnetcorev2_outofprocess.dll 不在 aspnetcorev2.dll 檔案旁邊。 這表示 ASP.NET Core 模組安裝損毀。

若要修正這個錯誤,請修復 .NET Core 裝載套件組合 (適用於 IIS) 或 Visual Studio (適用於 IIS Express) 安裝。

500.37 ANCM 無法在啟動時間限制內啟動

ANCM 無法在提供的啟動時間限制內啟動。 根據預設,逾時值為 120 秒。

在同一部電腦上啟動大量的應用程式時,就會發生此錯誤。 檢查伺服器在啟動期間是否出現 CPU/記憶體的使用量尖峰。 多個應用程式的啟動程序可能需要交錯進行。

找不到 500.38 ANCM 應用程式 DLL

ANCM 找不到應用程式 DLL,該 DLL 應該位於可執行檔旁邊。

使用同處理序主控模型主控封裝為單一檔案可執行檔的應用程式時,就會發生此錯誤。 同處理序模型需要 ANCM 將 .NET Core 應用程式載入現有的 IIS 處理序。 單一檔案部署模型不支援此案例。 使用應用程式專案檔中的下列其中一種方法來修正此錯誤:

  1. PublishSingleFile MSBuild 屬性設定為 false,以停用單一檔案發佈。
  2. AspNetCoreHostingModel MSBuild 屬性設定為 OutOfProcess,以切換至跨處理序主控模型。

502.5 處理序失敗

背景工作處理序失敗。 應用程式未啟動。

ASP.NET Core 模組嘗試啟動背景工作處理序,但無法啟動。 通常從應用程式事件記錄檔和 ASP.NET Core 模組 stdout 記錄檔中的項目,即可判斷啟動失敗的原因。

因為目標 ASP.NET Core 共用架構的版本不存在,導致應用程式設定錯誤是常見的失敗狀況。 請檢查安裝在目標機器上的 ASP.NET Core 共用架構版本為何。 「共用的架構」是一組安裝於電腦上且由 Microsoft.AspNetCore.App 之類的中繼套件所參考的組件 (.dll 檔案)。 中繼套件參考可以指定最低必要版本。 如需詳細資訊,請參閱共用的架構 \(英文\)。

當裝載或應用程式設定錯誤造成背景工作處理序發生失敗時,會傳回 [502.5 處理序失敗] 錯誤頁面:

無法啟動應用程式 (ErrorCode '0x800700c1')

EventID: 1010
Source: IIS AspNetCore Module V2
Failed to start application '/LM/W3SVC/6/ROOT/', ErrorCode '0x800700c1'.

應用程式無法啟動,因為無法載入應用程式的組件 (.dll)。

當已發行的應用程式與 w3wp/iisexpress 處理序之間出現位元不符的情況時,就會發生此錯誤。

確認應用程式集區的 32 位元設定正確:

  1. 在 IIS 管理員的 [應用程式集區] 中,選取應用程式集區。
  2. 在 [動作] 面板中,選取 [編輯應用程式集區] 下的 [進階設定]
  3. 設定 [啟用 32 位元應用程式]
    • 如果部署 32 位元 (x86) 應用程式,請將值設定為 True
    • 如果部署 64 位元 (x64) 應用程式,請將值設定為 False

確認專案檔中的 <Platform> MSBuild 屬性與應用程式的已發佈位元之間沒有衝突。

無法啟動應用程式 (ErrorCode '0x800701b1')

EventID: 1010
Source: IIS AspNetCore Module V2
Failed to start application '/LM/W3SVC/3/ROOT', ErrorCode '0x800701b1'.

應用程式無法啟動,因為 Windows 服務無法載入。

需要啟用的一個常見服務是「Null」服務。 下列命令會啟用 null Windows 服務:

sc.exe start null

連線重設

如果是在傳送標頭之後才發生錯誤,則當發生錯誤時,伺服器已來不及傳送「500 內部伺服器錯誤」。 通常是在將回應的複雜物件序列化的期間發生錯誤時,會發生此錯誤。 這類錯誤會在用戶端上顯示為「連線重設」錯誤。 應用程式記錄可協助針對這些類型的錯誤進行疑難排解。

預設啟動限制

ASP.NET Core 模組上已設定預設的 startupTimeLimit 120 秒。 保留預設值時,在模組記錄處理序失敗之前,應用程式最多可花費兩分鐘來進行啟動。 如需有關設定模組的資訊,請參閱 aspNetCore 元素的屬性

針對 Azure App Service 進行疑難排解

重要

ASP.NET Core 預覽版本與 Azure App Service

根據預設,ASP.NET Core 預覽版本不會部署至 Azure App Service。 若要裝載使用 ASP.NET Core 預覽版本的應用程式,請參閱將 ASP.NET Core 預覽版本部署至 Azure App Service

Azure App Services 記錄串流

Azure App Services 記錄串流會在發生時記錄資訊。 若要檢視串流記錄:

  1. 在 Azure 入口網站的 [應用程式服務] 中,開啟應用程式。
  2. 在左窗格中,瀏覽至 [監視]> [App Service 記錄]App Service 記錄
  3. 針對 [Web 伺服器記錄] 選取 [檔案系統]。 選擇性地啟用 [應用程式記錄]啟用記錄
  4. 在左窗格中,瀏覽至 [監視]> [記錄串流],然後選取 [應用程式記錄] 或 [Web 伺服器記錄]

監視記錄資料流

下列影像顯示應用程式記錄輸出:

應用程式記錄

串流記錄有一些延遲,而且可能不會立即顯示。

應用程式事件記錄檔 (Azure App Service)

若要存取「應用程式事件記錄檔」,請使用 Azure 入口網站中的 [診斷並解決問題] 刀鋒視窗:

  1. 在 Azure 入口網站的 [應用程式服務] 中,開啟應用程式。
  2. 選取 [診斷並解決問題]
  3. 選取 [診斷工具] 標題。
  4. 在 [支援工具] 下,選取 [應用程式事件] 按鈕。
  5. 檢查 [來源] 資料行中 IIS AspNetCoreModuleIIS AspNetCoreModule V2 項目所提供的最新錯誤。

除了使用 [診斷並解決問題] 刀鋒視窗之外,也可以使用 Kudu 來直接檢查「應用程式事件記錄檔」:

  1. 在 [開發工具] 區域中,開啟 [進階工具]。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
  2. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]
  3. 開啟 [LogFiles] 資料夾。
  4. 選取 eventlog.xml 檔案旁的鉛筆圖示。
  5. 檢查記錄檔。 捲動至記錄檔的底部以查看最新事件。

在 Kudu 主控台中執行應用程式

許多啟動錯誤不會在「應用程式事件記錄檔」中產生實用的資訊。 您可以在 Kudu「遠端執行主控台」中執行應用程式來探索錯誤:

  1. 在 [開發工具] 區域中,開啟 [進階工具]。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
  2. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]

測試 32 位元 (x86) 應用程式

目前的版本

  1. cd d:\home\site\wwwroot
  2. 執行應用程式:

應用程式的主控台輸出 (顯示任何錯誤) 會以管道傳送至 Kudu 主控台。

在預覽版上執行的架構相依部署

要求安裝 ASP.NET Core {VERSION} (x86) 執行階段網站延伸模組。

  1. cd D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x32 ({X.Y} 是執行階段版本)
  2. 執行應用程式:dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll

應用程式的主控台輸出 (顯示任何錯誤) 會以管道傳送至 Kudu 主控台。

測試 64 位元 (x64) 應用程式

目前的版本

  • 如果應用程式是 64 位元 (x64) 架構相依部署
    1. cd D:\Program Files\dotnet
    2. 執行應用程式:dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll
  • 如果應用程式是自封式部署
    1. cd D:\home\site\wwwroot
    2. 執行應用程式:{ASSEMBLY NAME}.exe

應用程式的主控台輸出 (顯示任何錯誤) 會以管道傳送至 Kudu 主控台。

在預覽版上執行的架構相依部署

要求安裝 ASP.NET Core {VERSION} (x64) 執行階段網站延伸模組。

  1. cd D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x64 ({X.Y} 是執行階段版本)
  2. 執行應用程式:dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll

應用程式的主控台輸出 (顯示任何錯誤) 會以管道傳送至 Kudu 主控台。

ASP.NET Core 模組 stdout 記錄 (Azure App Service)

警告

如果無法停用 stdout 記錄檔,可能會造成應用程式或伺服器發生失敗。 因為它並沒有記錄檔大小或數量上的限制。 請只在針對應用程式啟動問題進行疑難排解時,才使用 stdout 記錄。

針對 ASP.NET Core 應用程式啟動後的一般記錄,請使用會限制記錄檔大小並輪替記錄檔的記錄程式庫。 如需詳細資訊,請參閱協力廠商記錄提供者

ASP.NET Core 模組 stdout 記錄檔通常會記錄「應用程式事件記錄檔」中所沒有的實用訊息。 啟用及檢視 stdout 記錄檔:

  1. 在 Azure 入口網站中,瀏覽至 Web 應用程式。
  2. 在 [App Service] 刀鋒視窗中,於搜尋方塊中輸入 kudu
  3. 選取 [進階工具]> [前往]
  4. 選取 [偵錯主控台] > [CMD]
  5. 瀏覽至 site/wwwroot
  6. 選取鉛筆圖示以編輯 web.config 檔案。
  7. <aspNetCore /> 元素中,設定 stdoutLogEnabled="true" 並選取 [儲存]

透過設定 stdoutLogEnabled="false" 完成疑難排解時,請停用 stdout 記錄。

如需詳細資訊,請參閱適用於 IIS 的 ASP.NET Core 模組 (ANCM)

ASP.NET Core 模組偵錯記錄 (Azure App Service)

ASP.NET Core 模組偵錯記錄提供 ASP.NET Core 模組中其他且更深入的記錄。 啟用及檢視 stdout 記錄檔:

  1. 若要啟用增強型診斷記錄,請執行下列任一動作:
    • 遵循增強型診斷記錄中的指示,來設定應用程式進行增強型診斷記錄。 重新部署應用程式。
    • 使用 Kudu 主控台,將增強型診斷記錄中所顯示的 <handlerSettings> 新增至即時應用程式的 web.config 檔案:
      1. 在 [開發工具] 區域中,開啟 [進階工具]。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
      2. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]
      3. 將資料夾開啟至路徑 [site]>[wwwroot]。 選取鉛筆圖示來編輯 web.config 檔案。 新增 <handlerSettings> 區段,如增強型診斷記錄中所示。 選取儲存按鈕。
  2. 在 [開發工具] 區域中,開啟 [進階工具]。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
  3. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]
  4. 將資料夾開啟至路徑 [site]>[wwwroot]。 如果未提供 aspnetcore-debug.log 檔案的路徑,該檔案會顯示在清單中。 如果已提供路徑,請巡覽至記錄檔的位置。
  5. 使用檔案名稱旁的鉛筆圖示來開啟記錄檔。

完成疑難排解時,請停用偵錯記錄:

若要停用增強型偵錯記錄,請執行下列任一動作:

  • web.config 檔案本機移除 <handlerSettings> 並重新部署應用程式。
  • 使用 Kudu 主控台來編輯 web.config 檔案並移除 <handlerSettings> 區段。 儲存檔案。

如需詳細資訊,請參閱使用 ASP.NET Core 模組建立及重新導向記錄

警告

無法停用偵錯記錄,可能會造成應用程式或伺服器發生失敗。 記錄檔大小沒有任何限制。 請只在針對應用程式啟動問題進行疑難排解時,才使用偵錯記錄。

針對 ASP.NET Core 應用程式啟動後的一般記錄,請使用會限制記錄檔大小並輪替記錄檔的記錄程式庫。 如需詳細資訊,請參閱協力廠商記錄提供者

應用程式緩慢或停止回應 (Azure App Service)

當應用程式針對要求回應緩慢或無回應時,請參閱針對 Azure App Service 中 Web 應用程式效能變慢的問題進行疑難排解

監視刀鋒視窗

監視刀鋒視窗為本主題稍早所述的方法提供替代的疑難排解體驗。 這些刀鋒視窗可用來診斷 500 系列的錯誤。

請確認已安裝 ASP.NET Core 延伸模組。 如果未安裝這些延伸模組,請手動安裝:

  1. 在 [開發工具] 刀鋒視窗區段中,選取 [延伸模組] 刀鋒視窗。
  2. [ASP.NET Core 延伸模組] 應該會出現在清單中。
  3. 如果未安裝這些延伸模組,請選取 [新增] 按鈕。
  4. 從清單中選擇 [ASP.NET Core 延伸模組]
  5. 選取 [確定] 以接受法律條款。
  6. 在 [新增延伸模組] 刀鋒視窗上,選取 [確定]
  7. 成功安裝延伸模組時,會有資訊快顯訊息提供指示。

如果未啟用 stdout 記錄,請依照下列步驟進行操作:

  1. 在 Azure 入口網站中,選取 [開發工具] 區域中的 [進階工具] 刀鋒視窗。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
  2. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]
  3. 將資料夾開啟至路徑 [site]>[wwwroot],然後向下捲動以顯露位於清單底部的 web.config 檔案。
  4. 按一下 web.config 檔案旁邊的鉛筆圖示。
  5. stdoutLogEnabled 設定為 true,並將 stdoutLogFile 路徑變更為:\\?\%home%\LogFiles\stdout
  6. 選取 [儲存] 以儲存已更新的 web.config 檔案。

繼續接著啟用診斷記錄:

  1. 在 Azure 入口網站中,選取 [診斷記錄檔] 刀鋒視窗。
  2. 選取 [應用程式記錄 (檔案系統)] 和 [詳細錯誤訊息].的 [開啟] 開關。 選取刀鋒視窗頂端的 [儲存] 按鈕。
  3. 若要包含失敗要求追蹤 (也稱為「失敗要求事件緩衝處理」(FREB) 記錄),請選取 [失敗要求的追蹤] 的 [開啟] 開關。
  4. 選取 [記錄資料流] 刀鋒視窗 (列在入口網站中緊接在 [診斷記錄檔] 刀鋒視窗之下)。
  5. 對應用程式發出要求。
  6. 在記錄資料流資料內,會指出錯誤的原因。

完成疑難排解時,請務必停用 stdout 記錄。

檢視失敗要求追蹤記錄檔 (FREB 記錄檔):

  1. 在 Azure 入口網站中,瀏覽至 [診斷並解決問題] 刀鋒視窗。
  2. 從資訊看板的 [支援工具] 區域中,選取 [失敗要求追蹤記錄檔]

如需詳細資訊,請參閱<在 Azure App Service 中針對 Web 應用程式啟用診斷記錄功能>主題的<失敗要求追蹤>一節Azure Web 應用程式的應用程式效能常見問題集:如何開啟失敗要求追蹤?

如需詳細資訊,請參閱在 Azure App Service 中針對 Web 應用程式啟用診斷記錄功能

警告

如果無法停用 stdout 記錄檔,可能會造成應用程式或伺服器發生失敗。 因為它並沒有記錄檔大小或數量上的限制。

針對 ASP.NET Core 應用程式中的例行性記錄,請使用會限制記錄檔大小並輪替記錄檔的記錄程式庫。 如需詳細資訊,請參閱協力廠商記錄提供者

針對 IIS 進行疑難排解

應用程式事件記錄檔 (IIS)

存取「應用程式事件記錄檔」:

  1. 開啟 [開始] 功能表,搜尋事件檢視器,然後選取 [事件檢視器] 應用程式。
  2. 在 [事件檢視器] 中,開啟 [Windows 記錄] 節點。
  3. 選取 [應用程式] 以開啟「應用程式事件記錄檔」。
  4. 搜尋與失敗應用程式相關的錯誤。 錯誤在 [來源] 資料行中的值會是 IIS AspNetCore ModuleIIS Express AspNetCore Module

在命令提示字元中執行應用程式

許多啟動錯誤不會在「應用程式事件記錄檔」中產生實用的資訊。 您可以藉由在主控系統上的命令提示字元中執行應用程式,來找出一些錯誤的原因。

架構相依部署

如果應用程式是架構相依部署

  1. 在命令提示字元中,瀏覽至部署資料夾,然後使用 dotnet.exe 來執行應用程式組件以執行應用程式。 在下列命令中,請以應用程式組件的名稱取代 <assembly_name>:dotnet .\<assembly_name>.dll
  2. 來自應用程式的主控台輸出若有顯示任何錯誤,就會寫入至主控台視窗。
  3. 如果是在對應用程式發出要求時發生錯誤,請對 Kestrel 進行接聽的主機和連接埠發出要求。 如果使用預設主機和連接埠,請對 http://localhost:5000/ 發出要求。 如果應用程式在 Kestrel 端點位址正常回應,則問題與主機組態有關的機率較大,而與應用程式本身有關的機率較小。

自封式部署

如果應用程式是自封式部署

  1. 在命令提示字元中,瀏覽至部署資料夾,然後執行應用程式的可執行檔。 在下列命令中,請以應用程式組件的名稱取代 <assembly_name>:<assembly_name>.exe
  2. 來自應用程式的主控台輸出若有顯示任何錯誤,就會寫入至主控台視窗。
  3. 如果是在對應用程式發出要求時發生錯誤,請對 Kestrel 進行接聽的主機和連接埠發出要求。 如果使用預設主機和連接埠,請對 http://localhost:5000/ 發出要求。 如果應用程式在 Kestrel 端點位址正常回應,則問題與主機組態有關的機率較大,而與應用程式本身有關的機率較小。

ASP.NET Core 模組 stdout 記錄檔 (IIS)

啟用及檢視 stdout 記錄檔:

  1. 瀏覽至主控系統上網站的部署資料夾。
  2. 如果 [logs] 資料夾不存在,請建立該資料夾。 如需有關如何讓 MSBuild 在部署中自動建立 [logs] 資料夾的指示,請參閱目錄結構主題。
  3. 編輯 web.config 檔案。 將 stdoutLogEnabled 設定為 true,並將 stdoutLogFile 路徑變更為指向 [logs] 資料夾 (例如 .\logs\stdout)。 路徑中的 stdout 是記錄檔名稱前置詞。 建立記錄檔時,系統會自動新增時間戳記、處理序識別碼及副檔名。 使用 stdout 作為檔案名稱前置詞時,一般記錄檔會命名為 stdout_20180205184032_5412.log
  4. 請確定您的應用程式集區身分識別具有 logs 資料夾的寫入權限。
  5. 儲存已更新的 web.config 檔案。
  6. 對應用程式發出要求。
  7. 瀏覽至 [logs] 資料夾。 尋找並開啟最新的 stdout 記錄檔。
  8. 研究記錄檔以了解錯誤。

完成疑難排解時,請停用 stdout 記錄:

  1. 編輯 web.config 檔案。
  2. stdoutLogEnabled 設定為 false
  3. 儲存檔案。

如需詳細資訊,請參閱適用於 IIS 的 ASP.NET Core 模組 (ANCM)

警告

如果無法停用 stdout 記錄檔,可能會造成應用程式或伺服器發生失敗。 因為它並沒有記錄檔大小或數量上的限制。

針對 ASP.NET Core 應用程式中的例行性記錄,請使用會限制記錄檔大小並輪替記錄檔的記錄程式庫。 如需詳細資訊,請參閱協力廠商記錄提供者

ASP.NET Core 模組偵錯記錄 (IIS)

將下列處理常式設定新增至應用程式的 web.config 檔案,以啟用 ASP.NET Core 模組偵錯記錄:

<aspNetCore ...>
  <handlerSettings>
    <handlerSetting name="debugLevel" value="file" />
    <handlerSetting name="debugFile" value="c:\temp\ancm.log" />
  </handlerSettings>
</aspNetCore>

確認為記錄指定的路徑存在,而且應用程式集區的身分識別具有該位置的寫入權限。

如需詳細資訊,請參閱使用 ASP.NET Core 模組建立及重新導向記錄

啟用開發人員例外頁面

在開發環境中,可以將 ASPNETCORE_ENVIRONMENT環境變數新增至 web.config 來執行應用程式。 只要主機產生器上的 UseEnvironment 不會覆寫應用程式啟動內的環境,設定該環境變數便可允許在應用程式執行時顯示開發人員例外狀況頁面

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout"
      hostingModel="InProcess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
  </environmentVariables>
</aspNetCore>

只有在沒有對網際網路公開的暫存和測試伺服器上使用時,才建議為 ASPNETCORE_ENVIRONMENT 設定環境變數。 進行疑難排解之後,請從 web.config 檔案中移除環境變數。 如需有關在 web.config 中設定環境變數的資訊,請參閱 aspNetCore 的 environmentVariables 子元素

從應用程式取得資料

若應用程式能夠回應要求、請使用終端機內嵌中介軟體從應用程式取得要求、連線與額外資料。 如需詳細資訊和範例程式碼,請參閱針對 ASP.NET Core 專案進行疑難排解和偵錯

回應緩慢或無回應的應用程式 (IIS)

「損毀傾印」是系統記憶體的快照集,可協助您判斷應用程式損毀、啟動失敗或應用程式緩慢的原因。

應用程式損毀或發生例外狀況

Windows 錯誤報告 (WER) 取得並分析傾印:

  1. c:\dumps 中建立資料夾以保存損毀傾印檔案。 應用程式集區必須具備該資料夾的寫入權限。

  2. 執行 EnableDumps PowerShell 指令碼

    • 如果應用程式是使用同處理序主控模型,請執行 w3wp.exe 的指令碼:

      .\EnableDumps w3wp.exe c:\dumps
      
    • 如果應用程式是使用跨處理序主控模型,請執行 dotnet.exe 的指令碼:

      .\EnableDumps dotnet.exe c:\dumps
      
  3. 在會導致損毀的情況下,執行應用程式。

  4. 發生損毀之後,請執行 DisableDumps PowerShell 指令碼

在應用程式損毀且傾印收集完成之後,即可正常結束應用程式。 PowerShell 指令碼會將 WER 設定為每個應用程式收集最多五個傾印。

警告

損毀傾印可能會佔用大量磁碟空間 (每個高達好幾 GB)。

應用程式停止回應、在啟動期間失敗,或正常執行

當應用程式停止回應 (停止回應但不會當機)、在啟動期間失敗或正常執行時,請參閱使用者模式傾印檔案:選擇最佳工具以選取適當的工具來產生傾印。

分析傾印

您可以使用數種方法來分析傾印。 如需詳細資訊,請參閱分析使用者模式傾印檔案

清除套件快取

在升級開發電腦上的 .NET Core SDK 或變更應用程式內的套件版本之後,正常運作的應用程式便立即發生失敗。 在某些情況下,執行主要升級時,不一致的套件可能會中斷應用程式。 大多數這些問題都可依照下列指示來進行修正:

  1. 刪除 [bin] 和 [obj] 資料夾。

  2. 您可以從命令殼層執行 dotnet nuget locals all --clear 來清除套件快取。

    您也可以使用 nuget.exe 工具並執行 nuget locals all -clear 命令,來清除套件快取。 nuget.exe 並未隨附在 Windows 桌面作業系統的安裝中,必須另外從 NuGet 網站取得。

  3. 還原並重建專案。

  4. 在重新部署應用程式之前,請先刪除伺服器上部署資料夾中的所有檔案。

收集狀態碼和記錄項目

當在 IIS 上執行的 ASP.NET Core 應用程式遇到錯誤時,請收集資訊以協助診斷問題。 以下資訊對於疑難排解很有用:收集以下資訊:

將錯誤資訊與下列常見錯誤進行比較。 如果找到相符情況,請依照疑難排解建議進行操作。

本主題中的錯誤清單並不完整。 如果您遇到這裡未列出的錯誤,請使用本主題底部的 [內容意見反應] 按鈕來開啟新的問題,並提供如何重現錯誤的詳細指示。

重要

ASP.NET Core 預覽版本與 Azure App Service

根據預設,ASP.NET Core 預覽版本不會部署至 Azure App Service。 若要裝載使用 ASP.NET Core 預覽版本的應用程式,請參閱將 ASP.NET Core 預覽版本部署至 Azure App Service

作業系統升級已移除 32 位元的 ASP.NET Core 模組

應用程式記錄檔:無法載入模組 DLL C:\WINDOWS\system32\inetsrv\aspnetcore.dll。 資料即錯誤。

疑難排解:

作業系統升級時不會保留 C:\Windows\SysWOW64\inetsrv 目錄中的非作業系統檔案。 如果先安裝 ASP.NET Core 模組再升級 OS,然後在 OS 升級之後以 32 位元模式執行任何應用程式集區,就會發生此問題。 作業系統升級之後,請修復 ASP.NET Core 模組。 請參閱安裝 .NET Core 裝載套件組合。 執行安裝程式時,請選取 [修復]

遺失網站延伸模組、已安裝 32 位元 (x86) 和 64 位元 (x64) 網站延伸模組,或錯誤的處理序位元集合

適用於 Azure 應用程式服務所裝載的應用程式。

  • 瀏覽器:HTTP 錯誤 500.0 - ANCM 同處理序處理常式載入失敗

  • 應用程式記錄檔:叫用 hostfxr 以尋找同處理序要求處理常式失敗,而不會尋找任何原生相依性。 找不到同處理序要求處理常式。 已從叫用的 hostfxr 擷取輸出:找不到任何相容的架構版本。 找不到指定的架構 'Microsoft.AspNetCore.App' 版本 '{VERSION}-preview-*'。 無法啟動應用程式 '/LM/W3SVC/1416782824/ROOT', ErrorCode '0x8000ffff'。

  • ASP.NET Core 模組 stdout 記錄檔:找不到任何相容的架構版本。 找不到指定的架構 'Microsoft.AspNetCore.App' 版本 '{VERSION}-preview-*'。

  • ASP.NET Core 模組偵錯記錄:叫用 hostfxr 以尋找同處理序要求處理常式失敗,而不會尋找任何原生相依性。 這最有可能表示應用程式設定不正確,請檢查應用程式設為目標的 Microsoft.NetCore.App 和 Microsoft.AspNetCore.App 版本,並確定已安裝在電腦上。 已傳回失敗的 HRESULT:0x8000ffff。 找不到同處理序要求處理常式。 無法找到任何相容的架構版本。 找不到指定的架構 'Microsoft.AspNetCore.App' 版本 '{VERSION}-preview-*'。

疑難排解:

  • 如果在預覽執行階段中執行應用程式,請安裝與應用程式位元和應用程式執行階段版本相符的 32 位元 (x86) 64 位元 (x64) 網站延伸模組。 請勿同時安裝這兩個延伸模組或延伸模組的多個執行階段版本。

    • ASP.NET Core {RUNTIME VERSION} (x86) 執行階段
    • ASP.NET Core {RUNTIME VERSION} (x64) 執行階段

    重新啟動應用程式。 請等候數秒,讓應用程式重新啟動。

  • 如果在預覽執行階段中執行應用程式,而且已經安裝 32 位元 (x86) 和 64 位元 (x64) 網站延伸模組,請將與應用程式位元不符的網站延伸模組解除安裝。 移除網站延伸模組之後,請重新啟動應用程式。 請等候數秒,讓應用程式重新啟動。

  • 如果在預覽執行階段中執行應用程式,且網站延伸模組位元與應用程式相符,請確認預覽網站延伸模組的「執行階段版本」是否與應用程式相符。

  • 確認應用程式設定中應用程式的平台與應用程式位元相符。

如需詳細資訊,請參閱將 ASP.NET Core 應用程式部署至 Azure App Service

已部署 x86 應用程式,但未啟用 32 位元應用程式的應用程式集區

  • 瀏覽器:HTTP 錯誤 500.30 - ANCM 同處理序啟動失敗

  • 應用程式記錄檔:實體根目錄為 '{PATH}' 的應用程式 '/LM/W3SVC/5/ROOT' 遇到未預期的受控例外狀況,例外狀況代碼 = '0xe0434352'。 如需詳細資訊,請檢查 stderr 記錄檔。 實體根目錄為 '{PATH}' 的應用程式 '/LM/W3SVC/5/ROOT' 無法載入 CLR 和受控應用程式。 CLR 背景工作執行緒不當結束

  • ASP.NET Core 模組 stdout 記錄檔:已建立記錄檔,但是空的。

  • ASP.NET Core 核心模組偵錯記錄:已傳回失敗的 HRESULT:0x8007023e

SDK 會在發行獨立應用程式時攔截到此案例。 如果 RID 不符合平台目標 (例如 win10-x64 RID 在專案檔中使用 <PlatformTarget>x86</PlatformTarget>),SDK 就會產生錯誤。

疑難排解:

針對 x86 架構相依部署 (<PlatformTarget>x86</PlatformTarget>),請啟用 32 位元應用程式的 IIS 應用程式集區。 在 [IIS 管理員] 中,開啟應用程式集區的 [進階設定],然後將 [啟用 32 位元應用程式] 設定為 [True]

平台發生 RID 衝突

  • 瀏覽器:HTTP 錯誤 502.5 - 處理序失敗

  • 應用程式記錄檔:實體根目錄為 'C:{PATH}' 的應用程式 'MACHINE/WEBROOT/APPHOST/{ASSEMBLY}' 無法使用命令列 '"C:{PATH}{ASSEMBLY}.{exe|dll}" ' 來啟動處理序,ErrorCode = '0x80004005:ff。

  • ASP.NET Core 模組 stdout 記錄檔:無法處理的例外狀況:System.BadImageFormatException:無法載入檔案或組件 '{ASSEMBLY}.dll'。 嘗試載入了格式不正確的程式。

疑難排解:

  • 確認應用程式在 Kestrel 本機上執行。 處理序失敗,可能是因為應用程式發生問題。 如需詳細資訊,請參閱針對 Azure App Service 和 IIS 上的 ASP.NET Core 進行疑難排解

  • 如果在升級應用程式和部署更新的組件時,Azure 應用程式部署發生這個例外狀況,請手動刪除來自先前部署的所有檔案。 部署升級的應用程式時,延遲不相容的組件會導致 System.BadImageFormatException 例外狀況。

URI 端點錯誤或停止了網站

  • 瀏覽器:ERR_CONNECTION_REFUSED --或-- 無法連線

  • 應用程式記錄檔:無項目

  • ASP.NET Core 模組 stdout 記錄檔:未建立記錄檔。

  • ASP.NET Core 模組偵錯記錄:未建立記錄檔。

疑難排解:

  • 確認使用對應用程式正確的 URI 端點。 檢查繫結。

  • 確認 IIS 網站不是處於「已停止」狀態。

已停用 CoreWebEngine 或 W3SVC 伺服器功能

作業系統例外狀況:必須安裝 IIS 7.0 CoreWebEngine 和 W3SVC 功能,才能使用 ASP.NET Core 模組。

疑難排解:

確認已啟用適當的角色和功能。 請參閱 IIS 組態

不正確的網站實體路徑或遺失應用程式

  • 瀏覽器: 403 禁止 - 存取被拒--或-- 403.14 禁止 - 網頁伺服器已設為不列出此目錄的內容。

  • 應用程式記錄檔:無項目

  • ASP.NET Core 模組 stdout 記錄檔:未建立記錄檔。

  • ASP.NET Core 模組偵錯記錄:未建立記錄檔。

疑難排解:

檢查 IIS 網站的 [基本設定] 和實體的應用程式資料夾。 確認應用程式位於 IIS 網站實體路徑的資料夾中。

角色不正確、ASP.NET Core 模組未安裝,或權限不正確

  • 瀏覽器:500.19 內部伺服器錯誤 - 無法存取所要求的網頁,因為該頁面的相關組態資料無效。 --或-- 無法顯示此頁面

  • 應用程式記錄檔:無項目

  • ASP.NET Core 模組 stdout 記錄檔:未建立記錄檔。

  • ASP.NET Core 模組偵錯記錄:未建立記錄檔。

疑難排解:

  • 確認已啟用適當的角色。 請參閱 IIS 組態

  • 開啟 [程式和功能] 或 [應用程式與功能],並確認已安裝 Windows Server Hosting。 如果已安裝的程式清單中沒有 Windows Server Hosting,請下載並安裝 .NET Core 裝載套件組合。

    目前的 .NET Core 裝載套件組合安裝程式 (直接下載)

    如需詳細資訊,請參閱安裝 .NET Core 裝載套件組合

  • 確定 [應用程式集區] > [處理序模型] >Identity 設定為 ApplicationPoolIdentity,或自訂身分識別具有正確的權限,可存取應用程式的部署資料夾。

  • 若解除安裝 ASP.NET Core Hosting Bundle 並安裝舊版裝載套件組合,applicationHost.config 檔案不會包括 ASP.NET Core Module 的區段。 開啟位於 %windir%/System32/inetsrv/configapplicationHost.config,然後尋找 <configuration><configSections><sectionGroup name="system.webServer"> 區段群組。 若區段群組中沒有 ASP.NET Core Module 的區段,請新增區段元素:

    <section name="aspNetCore" overrideModeDefault="Allow" />
    

    或者,您也可以安裝最新版的「ASP.NET Core 裝載套件組合」。 最新版本回溯相容,提供支援的 ASP.NET Core 應用程式。

不正確的 processPath、遺失 PATH 變數、未安裝裝載套件組合、未重新啟動系統/IIS、未安裝 VC++ 可轉散發套件或 dotnet.exe 存取違規

  • 瀏覽器:HTTP 錯誤 500.0 - ANCM 同處理序處理常式載入失敗

  • 應用程式記錄檔:實體根目錄為 'C:{PATH}' 的應用程式 'MACHINE/WEBROOT/APPHOST/{ASSEMBLY}' 無法使用命令列 '"{...}" ' 來啟動處理序,ErrorCode = '0x80070002:0。 應用程式 '{PATH}' 無法啟動。 在 '{PATH}' 找不到可執行檔。 無法啟動應用程式 '/LM/W3SVC/2/ROOT',ErrorCode '0x8007023e'。

  • ASP.NET Core 模組 stdout 記錄檔:未建立記錄檔。

  • ASP.NET Core 模組偵錯記錄:事件記錄檔:無法啟動應用程式 '{PATH}'。 在 '{PATH}' 找不到可執行檔。 已傳回失敗的 HRESULT:0x8007023e

疑難排解:

  • 確認應用程式在 Kestrel 本機上執行。 處理序失敗,可能是因為應用程式發生問題。 如需詳細資訊,請參閱針對 Azure App Service 和 IIS 上的 ASP.NET Core 進行疑難排解

  • 檢查 web.config<aspNetCore> 元素上的 processPath 屬性,以確認它是 dotnet (適用於架構相依部署 (FDD)) 或 .\{ASSEMBLY}.exe (適用於自封式部署 (SCD))。

  • 若為 FDD,可能無法透過路徑設定存取 dotnet.exe。 確認系統 PATH 設定中有 C:\Program Files\dotnet\

  • 若為 FDD,應用程式集區的使用者身分識別可能無法存取 dotnet.exe。 確認應用程式集區使用者身分識別可以存取 C:\Program Files\dotnet 目錄。 確認 C:\Program Files\dotnet 和應用程式目錄上未針對應用程式集區使用者身分識別設定任何拒絕規則。

  • 可能已部署 FDD 並安裝 .NET Core,但未重新啟動 IIS。 從命令提示字元依序執行 net stop was /ynet start w3svc,重新啟動伺服器或重新啟動 IIS。

  • 可能已部署 FDD,但未在主控系統上安裝 .NET Core 執行階段。 如果尚未安裝 .NET Core 執行階段,請在系統上執行「.NET Core 裝載套件組合安裝程式」

    目前的 .NET Core 裝載套件組合安裝程式 (直接下載)

    如需詳細資訊,請參閱安裝 .NET Core 裝載套件組合

    如果需要特定執行階段,則請從 .NET 下載頁面下載執行階段,並將其安裝在系統上。 從命令提示字元依序執行 net stop was /ynet start w3svc,透過重新啟動系統或重新啟動 IIS 來完成安裝。

不正確的 <aspNetCore> 元素引數

  • 瀏覽器:HTTP 錯誤 500.0 - ANCM 同處理序處理常式載入失敗

  • 應用程式記錄檔:叫用 hostfxr 以尋找同處理序要求處理常式失敗,而不會尋找任何原生相依性。 這最有可能表示應用程式設定不正確,請檢查應用程式設為目標的 Microsoft.NetCore.App 和 Microsoft.AspNetCore.App 版本,並確定已安裝在電腦上。 找不到同處理序要求處理常式。 已從叫用的 hostfxr 擷取輸出:您是否表示要執行 dotnet SDK 命令? 請從下列位置安裝 dotnet SDK:https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409 無法啟動應用程式 '/LM/W3SVC/3/ROOT', ErrorCode '0x8000ffff'。

  • ASP.NET Core 模組 stdout 記錄檔:您是否想要執行 dotnet SDK 命令? 請從下列位置安裝 dotnet SDK:https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409

  • ASP.NET Core 模組偵錯記錄:叫用 hostfxr 以尋找同處理序要求處理常式失敗,而不會尋找任何原生相依性。 這最有可能表示應用程式設定不正確,請檢查應用程式設為目標的 Microsoft.NetCore.App 和 Microsoft.AspNetCore.App 版本,並確定已安裝在電腦上。 已傳回失敗的 HRESULT:0x8000ffff 找不到同處理序要求處理常式。 已從叫用的 hostfxr 擷取輸出:您是否表示要執行 dotnet SDK 命令? 請從下列位置安裝 dotnet SDK:https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409 已傳回失敗的 HRESULT:0x8000ffff

疑難排解:

  • 確認應用程式在 Kestrel 本機上執行。 處理序失敗,可能是因為應用程式發生問題。 如需詳細資訊,請參閱針對 Azure App Service 和 IIS 上的 ASP.NET Core 進行疑難排解

  • 檢查 web.config<aspNetCore> 元素上的 arguments 屬性,以確認它是 (a) .\{ASSEMBLY}.dll (適用於架構相依部署 (FDD));或 (b) 不存在、空字串 (arguments=""),或是應用程式的引數清單 (arguments="{ARGUMENT_1}, {ARGUMENT_2}, ... {ARGUMENT_X}",適用於自封式部署 (SCD))。

遺失 .NET Core 共用架構

  • 瀏覽器:HTTP 錯誤 500.0 - ANCM 同處理序處理常式載入失敗

  • 應用程式記錄檔:叫用 hostfxr 以尋找同處理序要求處理常式失敗,而不會尋找任何原生相依性。 這最有可能表示應用程式設定不正確,請檢查應用程式設為目標的 Microsoft.NetCore.App 和 Microsoft.AspNetCore.App 版本,並確定已安裝在電腦上。 找不到同處理序要求處理常式。 已從叫用的 hostfxr 擷取輸出:找不到任何相容的架構版本。 找不到指定的架構 'Microsoft.AspNetCore.App' 版本 '{VERSION}'。

無法啟動應用程式 '/LM/W3SVC/5/ROOT',ErrorCode '0x8000ffff'。

  • ASP.NET Core 模組 stdout 記錄檔:找不到任何相容的架構版本。 找不到指定的架構 'Microsoft.AspNetCore.App' 版本 '{VERSION}'。

  • ASP.NET Core 模組偵錯記錄:已傳回失敗的 HRESULT:0x8000ffff

疑難排解:

若為結構相依部署 (FDD),請確認已在系統上安裝正確的執行階段。

已停止應用程式集區

  • 瀏覽器:503 服務無法使用

  • 應用程式記錄檔:無項目

  • ASP.NET Core 模組 stdout 記錄檔:未建立記錄檔。

  • ASP.NET Core 模組偵錯記錄:未建立記錄檔。

疑難排解:

確認「應用程式集區」不是處於「已停止」狀態。

子應用程式包含<處理常式>區段

  • 瀏覽器:HTTP 錯誤 500.19 - 內部伺服器錯誤

  • 應用程式記錄檔:無項目

  • ASP.NET Core 模組 stdout 記錄檔:根應用程式的記錄檔已建立並顯示正常作業。 未建立子應用程式的記錄檔。

  • ASP.NET Core 模組偵錯記錄:根應用程式的記錄檔已建立並顯示正常作業。 未建立子應用程式的記錄檔。

疑難排解:

請確認子應用程式的 web.config 檔案不包含 <handlers> 區段,或子應用程式未繼承父應用程式的處理常式。

父應用程式 web.config<system.webServer> 區段位於 <location> 元素內。 將 InheritInChildApplications 屬性設定為 false,以指出位在父代應用程式子目錄中的應用程式不會繼承 <location> 元素內所指定的設定。 如需詳細資訊,請參閱適用於 IIS 的 ASP.NET Core 模組 (ANCM)

stdout 記錄檔路徑不正確

  • 瀏覽器:應用程式正常回應。

  • 應用程式記錄檔:無法在 C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll 中啟動 stdout 重新導向。 例外狀況訊息:已在 {PATH}\aspnetcoremodulev2\commonlib\fileoutputmanager.cpp:84 傳回 HRESULT 0x80070005。 無法在 C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll 中停止 stdout 重新導向。 例外狀況訊息:已在 {PATH} 傳回 HRESULT 0x80070002。 無法在 {PATH}\aspnetcorev2_inprocess.dll 中啟動 stdout 重新導向。

  • ASP.NET Core 模組 stdout 記錄檔:未建立記錄檔。

  • ASP.NET Core 模組偵錯記錄:無法在 C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll 中啟動 stdout 重新導向。 例外狀況訊息:已在 {PATH}\aspnetcoremodulev2\commonlib\fileoutputmanager.cpp:84 傳回 HRESULT 0x80070005。 無法在 C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll 中停止 stdout 重新導向。 例外狀況訊息:已在 {PATH} 傳回 HRESULT 0x80070002。 無法在 {PATH}\aspnetcorev2_inprocess.dll 中啟動 stdout 重新導向。

疑難排解:

應用程式組態一般問題

  • 瀏覽器:HTTP 錯誤 500.0 - ANCM 同處理序處理常式載入失敗 --或-- HTTP 錯誤 500.30 - ANCM 同處理序啟動失敗

  • 應用程式記錄檔:變數

  • ASP.NET Core 模組 stdout 記錄檔:在應用程式失敗之前,已建立記錄檔但是空的,或已使用一般項目建立記錄檔。

  • ASP.NET Core 模組偵錯記錄:變數

疑難排解:

處理序無法啟動,最可能的原因是應用程式組態或程式設計問題。

如需詳細資訊,請參閱下列主題:

其他資源

Azure 文件

Visual Studio 文件

Visual Studio Code 文件

本文提供常見應用程式啟動錯誤的相關資訊,以及如何在應用程式部署至 Azure App Service 或 IIS 時,診斷錯誤的指示:

應用程式啟動錯誤
說明常見的啟動 HTTP 狀態碼案例。

針對 Azure App Service 進行疑難排解
提供應用程式部署至 Azure App Service 的疑難排解建議。

針對 IIS 進行疑難排解
針對應用程式部署到 IIS 或在 IIS Express 上本機執行提供疑難排解建議。 本指南同時適用於 Windows Server 和 Windows 桌面部署。

清除套件快取
說明在執行主要升級或變更套件版本時,當不一致套件中斷應用程式的情況下,該怎麼做。

其他資源
列出其他疑難排解主題。

應用程式啟動錯誤

在 Visual Studio 中,進行偵錯時,ASP.NET Core 專案會預設為 IIS Express 裝載環境。 在本機偵錯時發生的「502.5 - 處理序失敗」或「500.30 - 啟動失敗」可以使用本主題中的建議在該位置進行診斷。

403.14 禁止

應用程式無法啟動。 記錄下列錯誤:

The Web server is configured to not list the contents of this directory.

錯誤通常是由主控系統上的部署中斷所造成,其中包括下列任何案例:

  • 應用程式部署到主控系統上的錯誤資料夾。
  • 部署處理序無法將所有應用程式的檔案和資料夾移至主控系統上的部署資料夾。
  • 部署中遺漏 web.config 檔案,或 web.config 檔案內容格式不正確。

執行下列步驟:

  1. 從主控系統上的部署資料夾刪除所有檔案和資料夾。
  2. 使用您一般的部署方法 (例如 Visual Studio、PowerShell 或手動部署),將應用程式的 publish 資料夾內容重新部署至主控系統:
    • 確認部署中有 web.config 檔案,且其內容正確無誤。
    • 在 Azure App Service 上主控時,請確認應用程式已部署至 D:\home\site\wwwroot 資料夾。
    • 當應用程式由 IIS 主控時,請確認應用程式已部署至 [IIS 管理員] 的 [基本設定] 中顯示的 IIS [實體路徑]
  3. 比較主控系統上的部署與專案 publish 資料夾的內容,以確認所有應用程式的檔案和資料夾皆已部署。

如需已發佈 ASP.NET Core 應用程式配置的詳細資訊,請參閱 ASP.NET Core 目錄結構。 如需關於 web.config 檔案詳細資訊,請參閱適用於 IIS 的 ASP.NET Core 模組 (ANCM)

500 內部伺服器錯誤

應用程式啟動,但有錯誤導致伺服器無法完成要求。

此錯誤是在啟動或建立回應時,在應用程式的程式碼內發生。 回應可能未包含任何內容,或是回應可能在瀏覽器中以「500 內部伺服器錯誤」的形式出現。 「應用程式事件記錄檔」通常會指出該應用程式已正常啟動。 從伺服器的觀點來看,這是正確的。 應用程式已啟動,但無法產生有效的回應。 請在伺服器上於命令提示字元中執行應用程式或啟用 ASP.NET Core 模組 stdout 記錄檔,以針對問題進行疑難排解。

當 .NET Core 裝載套件組合未安裝或損毀時,也可能會發生此錯誤。 安裝或修復 .NET Core 裝載套件組合 (適用於 IIS) 或 Visual Studio (適用於 IIS Express) 安裝,可能會修正此問題。

500.0 同處理序處理常式載入失敗

背景工作處理序失敗。 應用程式未啟動。

ASP.NET Core 模組找不到 .NET Core CLR,並尋找同處理序要求處理常式 (aspnetcorev2_inprocess.dll)。 請確定:

500.0 跨處理序處理常式載入失敗

背景工作處理序失敗。 應用程式未啟動。

ASP.NET Core 模組找不到跨處理序裝載要求處理常式。 請確定 aspnetcorev2_outofprocess.dll 出現在子資料夾中,且位於 aspnetcorev2.dll 旁。

502.5 處理序失敗

背景工作處理序失敗。 應用程式未啟動。

ASP.NET Core 模組嘗試啟動背景工作處理序,但無法啟動。 通常從應用程式事件記錄檔和 ASP.NET Core 模組 stdout 記錄檔中的項目,即可判斷啟動失敗的原因。

因為目標 ASP.NET Core 共用架構的版本不存在,導致應用程式設定錯誤是常見的失敗狀況。 請檢查安裝在目標機器上的 ASP.NET Core 共用架構版本為何。 「共用的架構」是一組安裝於電腦上且由 Microsoft.AspNetCore.App 之類的中繼套件所參考的組件 (.dll 檔案)。 中繼套件參考可以指定最低必要版本。 如需詳細資訊,請參閱共用的架構 \(英文\)。

當裝載或應用程式設定錯誤造成背景工作處理序發生失敗時,會傳回 [502.5 處理序失敗] 錯誤頁面:

無法啟動應用程式 (ErrorCode '0x800700c1')

EventID: 1010
Source: IIS AspNetCore Module V2
Failed to start application '/LM/W3SVC/6/ROOT/', ErrorCode '0x800700c1'.

應用程式無法啟動,因為無法載入應用程式的組件 (.dll)。

當已發行的應用程式與 w3wp/iisexpress 處理序之間出現位元不符的情況時,就會發生此錯誤。

確認應用程式集區的 32 位元設定正確:

  1. 在 IIS 管理員的 [應用程式集區] 中,選取應用程式集區。
  2. 在 [動作] 面板中,選取 [編輯應用程式集區] 下的 [進階設定]
  3. 設定 [啟用 32 位元應用程式]
    • 如果部署 32 位元 (x86) 應用程式,請將值設定為 True
    • 如果部署 64 位元 (x64) 應用程式,請將值設定為 False

確認專案檔中的 <Platform> MSBuild 屬性與應用程式的已發佈位元之間沒有衝突。

連線重設

如果是在傳送標頭之後才發生錯誤,則當發生錯誤時,伺服器已來不及傳送「500 內部伺服器錯誤」。 通常是在將回應的複雜物件序列化的期間發生錯誤時,會發生此錯誤。 這類錯誤會在用戶端上顯示為「連線重設」錯誤。 應用程式記錄可協助針對這些類型的錯誤進行疑難排解。

預設啟動限制

ASP.NET Core 模組上已設定預設的 startupTimeLimit 120 秒。 保留預設值時,在模組記錄處理序失敗之前,應用程式最多可花費兩分鐘來進行啟動。 如需有關設定模組的資訊,請參閱 aspNetCore 元素的屬性

針對 Azure App Service 進行疑難排解

重要

ASP.NET Core 預覽版本與 Azure App Service

根據預設,ASP.NET Core 預覽版本不會部署至 Azure App Service。 若要裝載使用 ASP.NET Core 預覽版本的應用程式,請參閱將 ASP.NET Core 預覽版本部署至 Azure App Service

應用程式事件記錄檔 (Azure App Service)

若要存取「應用程式事件記錄檔」,請使用 Azure 入口網站中的 [診斷並解決問題] 刀鋒視窗:

  1. 在 Azure 入口網站的 [應用程式服務] 中,開啟應用程式。
  2. 選取 [診斷並解決問題]
  3. 選取 [診斷工具] 標題。
  4. 在 [支援工具] 下,選取 [應用程式事件] 按鈕。
  5. 檢查 [來源] 資料行中 IIS AspNetCoreModuleIIS AspNetCoreModule V2 項目所提供的最新錯誤。

除了使用 [診斷並解決問題] 刀鋒視窗之外,也可以使用 Kudu 來直接檢查「應用程式事件記錄檔」:

  1. 在 [開發工具] 區域中,開啟 [進階工具]。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
  2. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]
  3. 開啟 [LogFiles] 資料夾。
  4. 選取 eventlog.xml 檔案旁的鉛筆圖示。
  5. 檢查記錄檔。 捲動至記錄檔的底部以查看最新事件。

在 Kudu 主控台中執行應用程式

許多啟動錯誤不會在「應用程式事件記錄檔」中產生實用的資訊。 您可以在 Kudu「遠端執行主控台」中執行應用程式來探索錯誤:

  1. 在 [開發工具] 區域中,開啟 [進階工具]。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
  2. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]

測試 32 位元 (x86) 應用程式

目前的版本

  1. cd d:\home\site\wwwroot
  2. 執行應用程式:

應用程式的主控台輸出 (顯示任何錯誤) 會以管道傳送至 Kudu 主控台。

在預覽版上執行的架構相依部署

要求安裝 ASP.NET Core {VERSION} (x86) 執行階段網站延伸模組。

  1. cd D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x32 ({X.Y} 是執行階段版本)
  2. 執行應用程式:dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll

應用程式的主控台輸出 (顯示任何錯誤) 會以管道傳送至 Kudu 主控台。

測試 64 位元 (x64) 應用程式

目前的版本

  • 如果應用程式是 64 位元 (x64) 架構相依部署
    1. cd D:\Program Files\dotnet
    2. 執行應用程式:dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll
  • 如果應用程式是自封式部署
    1. cd D:\home\site\wwwroot
    2. 執行應用程式:{ASSEMBLY NAME}.exe

應用程式的主控台輸出 (顯示任何錯誤) 會以管道傳送至 Kudu 主控台。

在預覽版上執行的架構相依部署

要求安裝 ASP.NET Core {VERSION} (x64) 執行階段網站延伸模組。

  1. cd D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x64 ({X.Y} 是執行階段版本)
  2. 執行應用程式:dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll

應用程式的主控台輸出 (顯示任何錯誤) 會以管道傳送至 Kudu 主控台。

ASP.NET Core 模組 stdout 記錄 (Azure App Service)

ASP.NET Core 模組 stdout 記錄檔通常會記錄「應用程式事件記錄檔」中所沒有的實用訊息。 啟用及檢視 stdout 記錄檔:

  1. 在 Azure 入口網站中,瀏覽至 [診斷並解決問題] 刀鋒視窗。
  2. 在 [選取問題類別] 底下,選取 [Web 應用程式停止運作] 按鈕。
  3. 在 [建議的解決方案]>[啟用 Stdout 記錄檔重新導向] 底下,選取用來開啟 Kudu 主控台以編輯 Web.Config 的按鈕。
  4. 在 Kudu [診斷主控台] 中,將資料夾開啟至路徑 [site]>[wwwroot]。 向下捲動以顯露位於清單底部的 web.config 檔案。
  5. 按一下 web.config 檔案旁邊的鉛筆圖示。
  6. stdoutLogEnabled 設定為 true,並將 stdoutLogFile 路徑變更為:\\?\%home%\LogFiles\stdout
  7. 選取 [儲存] 以儲存已更新的 web.config 檔案。
  8. 對應用程式發出要求。
  9. 返回 Azure 入口網站。 選取 [開發工具] 區域中的 [進階工具] 刀鋒視窗。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
  10. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]
  11. 選取 [LogFiles] 資料夾。
  12. 檢查 [修改時間] 資料行,然後選取鉛筆圖示來編輯修改日期最新的 stdout 記錄檔。
  13. 當記錄檔開啟時,會顯示錯誤。

完成疑難排解時,請停用 stdout 記錄:

  1. 在 Kudu [診斷主控台] 中,返回路徑 [site]>[wwwroot] 以顯露 web.config 檔案。 再次選取鉛筆圖示來開啟 web.config 檔案。
  2. stdoutLogEnabled 設定為 false
  3. 選取 [儲存] 以儲存檔案。

如需詳細資訊,請參閱適用於 IIS 的 ASP.NET Core 模組 (ANCM)

警告

如果無法停用 stdout 記錄檔,可能會造成應用程式或伺服器發生失敗。 因為它並沒有記錄檔大小或數量上的限制。 請只在針對應用程式啟動問題進行疑難排解時,才使用 stdout 記錄。

針對 ASP.NET Core 應用程式啟動後的一般記錄,請使用會限制記錄檔大小並輪替記錄檔的記錄程式庫。 如需詳細資訊,請參閱協力廠商記錄提供者

ASP.NET Core 模組偵錯記錄 (Azure App Service)

ASP.NET Core 模組偵錯記錄提供 ASP.NET Core 模組中其他且更深入的記錄。 啟用及檢視 stdout 記錄檔:

  1. 若要啟用增強型診斷記錄,請執行下列任一動作:
    • 遵循增強型診斷記錄中的指示,來設定應用程式進行增強型診斷記錄。 重新部署應用程式。
    • 使用 Kudu 主控台,將增強型診斷記錄中所顯示的 <handlerSettings> 新增至即時應用程式的 web.config 檔案:
      1. 在 [開發工具] 區域中,開啟 [進階工具]。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
      2. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]
      3. 將資料夾開啟至路徑 [site]>[wwwroot]。 選取鉛筆圖示來編輯 web.config 檔案。 新增 <handlerSettings> 區段,如增強型診斷記錄中所示。 選取儲存按鈕。
  2. 在 [開發工具] 區域中,開啟 [進階工具]。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
  3. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]
  4. 將資料夾開啟至路徑 [site]>[wwwroot]。 如果未提供 aspnetcore-debug.log 檔案的路徑,該檔案會顯示在清單中。 如果已提供路徑,請巡覽至記錄檔的位置。
  5. 使用檔案名稱旁的鉛筆圖示來開啟記錄檔。

完成疑難排解時,請停用偵錯記錄:

若要停用增強型偵錯記錄,請執行下列任一動作:

  • web.config 檔案本機移除 <handlerSettings> 並重新部署應用程式。
  • 使用 Kudu 主控台來編輯 web.config 檔案並移除 <handlerSettings> 區段。 儲存檔案。

如需詳細資訊,請參閱使用 ASP.NET Core 模組建立及重新導向記錄

警告

無法停用偵錯記錄,可能會造成應用程式或伺服器發生失敗。 記錄檔大小沒有任何限制。 請只在針對應用程式啟動問題進行疑難排解時,才使用偵錯記錄。

針對 ASP.NET Core 應用程式啟動後的一般記錄,請使用會限制記錄檔大小並輪替記錄檔的記錄程式庫。 如需詳細資訊,請參閱協力廠商記錄提供者

應用程式緩慢或停止回應 (Azure App Service)

當應用程式針對要求回應緩慢或無回應時,請參閱下列文章:

監視刀鋒視窗

監視刀鋒視窗為本主題稍早所述的方法提供替代的疑難排解體驗。 這些刀鋒視窗可用來診斷 500 系列的錯誤。

請確認已安裝 ASP.NET Core 延伸模組。 如果未安裝這些延伸模組,請手動安裝:

  1. 在 [開發工具] 刀鋒視窗區段中,選取 [延伸模組] 刀鋒視窗。
  2. [ASP.NET Core 延伸模組] 應該會出現在清單中。
  3. 如果未安裝這些延伸模組,請選取 [新增] 按鈕。
  4. 從清單中選擇 [ASP.NET Core 延伸模組]
  5. 選取 [確定] 以接受法律條款。
  6. 在 [新增延伸模組] 刀鋒視窗上,選取 [確定]
  7. 成功安裝延伸模組時,會有資訊快顯訊息提供指示。

如果未啟用 stdout 記錄,請依照下列步驟進行操作:

  1. 在 Azure 入口網站中,選取 [開發工具] 區域中的 [進階工具] 刀鋒視窗。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
  2. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]
  3. 將資料夾開啟至路徑 [site]>[wwwroot],然後向下捲動以顯露位於清單底部的 web.config 檔案。
  4. 按一下 web.config 檔案旁邊的鉛筆圖示。
  5. stdoutLogEnabled 設定為 true,並將 stdoutLogFile 路徑變更為:\\?\%home%\LogFiles\stdout
  6. 選取 [儲存] 以儲存已更新的 web.config 檔案。

繼續接著啟用診斷記錄:

  1. 在 Azure 入口網站中,選取 [診斷記錄檔] 刀鋒視窗。
  2. 選取 [應用程式記錄 (檔案系統)] 和 [詳細錯誤訊息].的 [開啟] 開關。 選取刀鋒視窗頂端的 [儲存] 按鈕。
  3. 若要包含失敗要求追蹤 (也稱為「失敗要求事件緩衝處理」(FREB) 記錄),請選取 [失敗要求的追蹤] 的 [開啟] 開關。
  4. 選取 [記錄資料流] 刀鋒視窗 (列在入口網站中緊接在 [診斷記錄檔] 刀鋒視窗之下)。
  5. 對應用程式發出要求。
  6. 在記錄資料流資料內,會指出錯誤的原因。

完成疑難排解時,請務必停用 stdout 記錄。

檢視失敗要求追蹤記錄檔 (FREB 記錄檔):

  1. 在 Azure 入口網站中,瀏覽至 [診斷並解決問題] 刀鋒視窗。
  2. 從資訊看板的 [支援工具] 區域中,選取 [失敗要求追蹤記錄檔]

如需詳細資訊,請參閱<在 Azure App Service 中針對 Web 應用程式啟用診斷記錄功能>主題的<失敗要求追蹤>一節Azure Web 應用程式的應用程式效能常見問題集:如何開啟失敗要求追蹤?

如需詳細資訊,請參閱在 Azure App Service 中針對 Web 應用程式啟用診斷記錄功能

警告

如果無法停用 stdout 記錄檔,可能會造成應用程式或伺服器發生失敗。 因為它並沒有記錄檔大小或數量上的限制。

針對 ASP.NET Core 應用程式中的例行性記錄,請使用會限制記錄檔大小並輪替記錄檔的記錄程式庫。 如需詳細資訊,請參閱協力廠商記錄提供者

針對 IIS 進行疑難排解

應用程式事件記錄檔 (IIS)

存取「應用程式事件記錄檔」:

  1. 開啟 [開始] 功能表,搜尋事件檢視器,然後選取 [事件檢視器] 應用程式。
  2. 在 [事件檢視器] 中,開啟 [Windows 記錄] 節點。
  3. 選取 [應用程式] 以開啟「應用程式事件記錄檔」。
  4. 搜尋與失敗應用程式相關的錯誤。 錯誤在 [來源] 資料行中的值會是 IIS AspNetCore ModuleIIS Express AspNetCore Module

在命令提示字元中執行應用程式

許多啟動錯誤不會在「應用程式事件記錄檔」中產生實用的資訊。 您可以藉由在主控系統上的命令提示字元中執行應用程式,來找出一些錯誤的原因。

架構相依部署

如果應用程式是架構相依部署

  1. 在命令提示字元中,瀏覽至部署資料夾,然後使用 dotnet.exe 來執行應用程式組件以執行應用程式。 在下列命令中,請以應用程式組件的名稱取代 <assembly_name>:dotnet .\<assembly_name>.dll
  2. 來自應用程式的主控台輸出若有顯示任何錯誤,就會寫入至主控台視窗。
  3. 如果是在對應用程式發出要求時發生錯誤,請對 Kestrel 進行接聽的主機和連接埠發出要求。 如果使用預設主機和連接埠,請對 http://localhost:5000/ 發出要求。 如果應用程式在 Kestrel 端點位址正常回應,則問題與主機組態有關的機率較大,而與應用程式本身有關的機率較小。

自封式部署

如果應用程式是自封式部署

  1. 在命令提示字元中,瀏覽至部署資料夾,然後執行應用程式的可執行檔。 在下列命令中,請以應用程式組件的名稱取代 <assembly_name>:<assembly_name>.exe
  2. 來自應用程式的主控台輸出若有顯示任何錯誤,就會寫入至主控台視窗。
  3. 如果是在對應用程式發出要求時發生錯誤,請對 Kestrel 進行接聽的主機和連接埠發出要求。 如果使用預設主機和連接埠,請對 http://localhost:5000/ 發出要求。 如果應用程式在 Kestrel 端點位址正常回應,則問題與主機組態有關的機率較大,而與應用程式本身有關的機率較小。

ASP.NET Core 模組 stdout 記錄檔 (IIS)

啟用及檢視 stdout 記錄檔:

  1. 瀏覽至主控系統上網站的部署資料夾。
  2. 如果 [logs] 資料夾不存在,請建立該資料夾。 如需有關如何讓 MSBuild 在部署中自動建立 [logs] 資料夾的指示,請參閱目錄結構主題。
  3. 編輯 web.config 檔案。 將 stdoutLogEnabled 設定為 true,並將 stdoutLogFile 路徑變更為指向 [logs] 資料夾 (例如 .\logs\stdout)。 路徑中的 stdout 是記錄檔名稱前置詞。 建立記錄檔時,系統會自動新增時間戳記、處理序識別碼及副檔名。 使用 stdout 作為檔案名稱前置詞時,一般記錄檔會命名為 stdout_20180205184032_5412.log
  4. 請確定您的應用程式集區身分識別具有 logs 資料夾的寫入權限。
  5. 儲存已更新的 web.config 檔案。
  6. 對應用程式發出要求。
  7. 瀏覽至 [logs] 資料夾。 尋找並開啟最新的 stdout 記錄檔。
  8. 研究記錄檔以了解錯誤。

完成疑難排解時,請停用 stdout 記錄:

  1. 編輯 web.config 檔案。
  2. stdoutLogEnabled 設定為 false
  3. 儲存檔案。

如需詳細資訊,請參閱適用於 IIS 的 ASP.NET Core 模組 (ANCM)

警告

如果無法停用 stdout 記錄檔,可能會造成應用程式或伺服器發生失敗。 因為它並沒有記錄檔大小或數量上的限制。

針對 ASP.NET Core 應用程式中的例行性記錄,請使用會限制記錄檔大小並輪替記錄檔的記錄程式庫。 如需詳細資訊,請參閱協力廠商記錄提供者

ASP.NET Core 模組偵錯記錄 (IIS)

將下列處理常式設定新增至應用程式的 web.config 檔案,以啟用 ASP.NET Core 模組偵錯記錄:

<aspNetCore ...>
  <handlerSettings>
    <handlerSetting name="debugLevel" value="file" />
    <handlerSetting name="debugFile" value="c:\temp\ancm.log" />
  </handlerSettings>
</aspNetCore>

確認為記錄指定的路徑存在,而且應用程式集區的身分識別具有該位置的寫入權限。

如需詳細資訊,請參閱使用 ASP.NET Core 模組建立及重新導向記錄

啟用開發人員例外頁面

在開發環境中,可以將 ASPNETCORE_ENVIRONMENT環境變數新增至 web.config 來執行應用程式。 只要主機產生器上的 UseEnvironment 不會覆寫應用程式啟動內的環境,設定該環境變數便可允許在應用程式執行時顯示開發人員例外狀況頁面

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout"
      hostingModel="InProcess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
  </environmentVariables>
</aspNetCore>

只有在沒有對網際網路公開的暫存和測試伺服器上使用時,才建議為 ASPNETCORE_ENVIRONMENT 設定環境變數。 進行疑難排解之後,請從 web.config 檔案中移除環境變數。 如需有關在 web.config 中設定環境變數的資訊,請參閱 aspNetCore 的 environmentVariables 子元素

從應用程式取得資料

若應用程式能夠回應要求、請使用終端機內嵌中介軟體從應用程式取得要求、連線與額外資料。 如需詳細資訊和範例程式碼,請參閱針對 ASP.NET Core 專案進行疑難排解和偵錯

回應緩慢或無回應的應用程式 (IIS)

「損毀傾印」是系統記憶體的快照集,可協助您判斷應用程式損毀、啟動失敗或應用程式緩慢的原因。

應用程式損毀或發生例外狀況

Windows 錯誤報告 (WER) 取得並分析傾印:

  1. c:\dumps 中建立資料夾以保存損毀傾印檔案。 應用程式集區必須具備該資料夾的寫入權限。

  2. 執行 EnableDumps PowerShell 指令碼

    • 如果應用程式是使用同處理序主控模型,請執行 w3wp.exe 的指令碼:

      .\EnableDumps w3wp.exe c:\dumps
      
    • 如果應用程式是使用跨處理序主控模型,請執行 dotnet.exe 的指令碼:

      .\EnableDumps dotnet.exe c:\dumps
      
  3. 在會導致損毀的情況下,執行應用程式。

  4. 發生損毀之後,請執行 DisableDumps PowerShell 指令碼

在應用程式損毀且傾印收集完成之後,即可正常結束應用程式。 PowerShell 指令碼會將 WER 設定為每個應用程式收集最多五個傾印。

警告

損毀傾印可能會佔用大量磁碟空間 (每個高達好幾 GB)。

應用程式停止回應、在啟動期間失敗,或正常執行

當應用程式停止回應 (停止回應但不會當機)、在啟動期間失敗或正常執行時,請參閱使用者模式傾印檔案:選擇最佳工具以選取適當的工具來產生傾印。

分析傾印

您可以使用數種方法來分析傾印。 如需詳細資訊,請參閱分析使用者模式傾印檔案

清除套件快取

在升級開發電腦上的 .NET Core SDK 或變更應用程式內的套件版本之後,正常運作的應用程式便立即發生失敗。 在某些情況下,執行主要升級時,不一致的套件可能會中斷應用程式。 大多數這些問題都可依照下列指示來進行修正:

  1. 刪除 [bin] 和 [obj] 資料夾。

  2. 您可以從命令殼層執行 dotnet nuget locals all --clear 來清除套件快取。

    您也可以使用 nuget.exe 工具並執行 nuget locals all -clear 命令,來清除套件快取。 nuget.exe 並未隨附在 Windows 桌面作業系統的安裝中,必須另外從 NuGet 網站取得。

  3. 還原並重建專案。

  4. 在重新部署應用程式之前,請先刪除伺服器上部署資料夾中的所有檔案。

其他資源

Azure 文件

Visual Studio 文件

Visual Studio Code 文件

本文提供常見應用程式啟動錯誤的相關資訊,以及如何在應用程式部署至 Azure App Service 或 IIS 時,診斷錯誤的指示:

應用程式啟動錯誤
說明常見的啟動 HTTP 狀態碼案例。

針對 Azure App Service 進行疑難排解
提供應用程式部署至 Azure App Service 的疑難排解建議。

針對 IIS 進行疑難排解
針對應用程式部署到 IIS 或在 IIS Express 上本機執行提供疑難排解建議。 本指南同時適用於 Windows Server 和 Windows 桌面部署。

清除套件快取
說明在執行主要升級或變更套件版本時,當不一致套件中斷應用程式的情況下,該怎麼做。

其他資源
列出其他疑難排解主題。

應用程式啟動錯誤

在 Visual Studio 中,ASP.NET Core 專案預設伺服器為 Kestrel。 Visual Studio 可以設定為使用 IIS Express。 在本機偵錯時發生的「502.5 - 處理序失敗」或「500.30 - 啟動失敗」可以使用本主題中的建議,利用 IIS Express 在該位置進行診斷。

403.14 禁止

應用程式無法啟動。 記錄下列錯誤:

The Web server is configured to not list the contents of this directory.

錯誤通常是由主控系統上的部署中斷所造成,其中包括下列任何案例:

  • 應用程式部署到主控系統上的錯誤資料夾。
  • 部署處理序無法將所有應用程式的檔案和資料夾移至主控系統上的部署資料夾。
  • 部署中遺漏 web.config 檔案,或 web.config 檔案內容格式不正確。

執行下列步驟:

  1. 從主控系統上的部署資料夾刪除所有檔案和資料夾。
  2. 使用您一般的部署方法 (例如 Visual Studio、PowerShell 或手動部署),將應用程式的 publish 資料夾內容重新部署至主控系統:
    • 確認部署中有 web.config 檔案,且其內容正確無誤。
    • 在 Azure App Service 上主控時,請確認應用程式已部署至 D:\home\site\wwwroot 資料夾。
    • 當應用程式由 IIS 主控時,請確認應用程式已部署至 [IIS 管理員] 的 [基本設定] 中顯示的 IIS [實體路徑]
  3. 比較主控系統上的部署與專案 publish 資料夾的內容,以確認所有應用程式的檔案和資料夾皆已部署。

如需已發佈 ASP.NET Core 應用程式配置的詳細資訊,請參閱 ASP.NET Core 目錄結構。 如需關於 web.config 檔案詳細資訊,請參閱適用於 IIS 的 ASP.NET Core 模組 (ANCM)

500 內部伺服器錯誤

應用程式啟動,但有錯誤導致伺服器無法完成要求。

此錯誤是在啟動或建立回應時,在應用程式的程式碼內發生。 回應可能未包含任何內容,或是回應可能在瀏覽器中以「500 內部伺服器錯誤」的形式出現。 「應用程式事件記錄檔」通常會指出該應用程式已正常啟動。 從伺服器的觀點來看,這是正確的。 應用程式已啟動,但無法產生有效的回應。 請在伺服器上於命令提示字元中執行應用程式或啟用 ASP.NET Core 模組 stdout 記錄檔,以針對問題進行疑難排解。

當 .NET Core 裝載套件組合未安裝或損毀時,也可能會發生此錯誤。 安裝或修復 .NET Core 裝載套件組合 (適用於 IIS) 或 Visual Studio (適用於 IIS Express) 安裝,可能會修正此問題。

500.0 同處理序處理常式載入失敗

背景工作處理序失敗。 應用程式未啟動。

載入 ASP.NET Core 模組元件時發生未知的錯誤。 請採取下列其中一個動作:

500.30 同處理序啟動失敗

背景工作處理序失敗。 應用程式未啟動。

ASP.NET Core 模組嘗試啟動 .NET Core CLR 同處理序,但無法啟動。 通常從應用程式事件記錄檔和 ASP.NET Core 模組 stdout 記錄檔中的項目,即可判斷啟動失敗的原因。

常見失敗狀況:

  • 因為目標 ASP.NET Core 共用架構的版本不存在,而導致應用程式設定錯誤。 請檢查安裝在目標機器上的 ASP.NET Core 共用架構版本為何。
  • 使用 Azure Key Vault 時,缺少 Key Vault 的權限。 檢查目標 Key Vault 中的存取原則,以確保授與正確的權限。

500.31 ANCM 找不到原生相依性

背景工作處理序失敗。 應用程式未啟動。

ASP.NET Core 模組嘗試啟動 .NET Core 執行階段同處理序,但無法啟動。 此啟動失敗的最常見原因是當 Microsoft.NETCore.AppMicrosoft.AspNetCore.App 執行階段未安裝時。 如果應用程式部署至目標 ASP.NET Core 3.0,但電腦上無該版本,就會發生此錯誤。 範例錯誤訊息如下:

The specified framework 'Microsoft.NETCore.App', version '3.0.0' was not found.
  - The following frameworks were found:
      2.2.1 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview5-27626-15 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview6-27713-13 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview6-27714-15 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview6-27723-08 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]

錯誤訊息會列出所有已安裝 .NET Core 版本和應用程式所要求的版本。 若要修正此錯誤,請使用以下其中一種方法:

  • 在電腦上安裝適當的 .NET Core 版本。
  • 將應用程式的目標 .NET Core 版本變更為電腦上版本。
  • 將應用程式發佈為自封式部署

在開發過程中執行時 (ASPNETCORE_ENVIRONMENT 環境變數設定為 Development),特定的錯誤會寫入至 HTTP 回應。 處理序啟動失敗的原因也會列在應用程式事件記錄檔中。

500.32 ANCM 無法載入 dll

背景工作處理序失敗。 應用程式未啟動。

此錯誤最常見原因是針對不相容的處理器架構發佈應用程式。 如果背景工作處理序執行為 32 位元應用程式,而此應用程式已發佈至目標 64 位元,就會發生此錯誤。

若要修正此錯誤,請使用以下其中一種方法:

  • 針對相同的處理器架構,將應用程式重新發佈為背景工作處理序。
  • 將應用程式發佈為架構相依部署

500.33 ANCM 要求處理常式載入失敗

背景工作處理序失敗。 應用程式未啟動。

應用程式未參考 Microsoft.AspNetCore.App 架構。 ASP.NET Core 模組只裝載以 Microsoft.AspNetCore.App 架構為目標的應用程式。

若要修正這個錯誤,請確認應用程式以 Microsoft.AspNetCore.App 架構為目標。 檢查 .runtimeconfig.json 以驗證應用程式是否以該架構為目標。

500.34 ANCM 不支援混合式裝載模型

背景工作處理序無法在相同的程序中執行同處理序應用程式和跨處理序應用程式。

若要修正這個錯誤,請在不同的 IIS 應用程式集區中執行應用程式。

500.35 ANCM 同一程序中有多個同處理序應用程式

背景工作處理序無法在同一個處理序中執行多個同處理序應用程式。

若要修正這個錯誤,請在不同的 IIS 應用程式集區中執行應用程式。

500.36 ANCM 跨處理序處理常式載入失敗

跨處理序要求處理常式 aspnetcorev2_outofprocess.dll 不在 aspnetcorev2.dll 檔案旁邊。 這表示 ASP.NET Core 模組安裝損毀。

若要修正這個錯誤,請修復 .NET Core 裝載套件組合 (適用於 IIS) 或 Visual Studio (適用於 IIS Express) 安裝。

500.37 ANCM 無法在啟動時間限制內啟動

ANCM 無法在提供的啟動時間限制內啟動。 根據預設,逾時值為 120 秒。

在同一部電腦上啟動大量的應用程式時,就會發生此錯誤。 檢查伺服器在啟動期間是否出現 CPU/記憶體的使用量尖峰。 多個應用程式的啟動程序可能需要交錯進行。

找不到 500.38 ANCM 應用程式 DLL

ANCM 找不到應用程式 DLL,該 DLL 應該位於可執行檔旁邊。

使用同處理序主控模型主控封裝為單一檔案可執行檔的應用程式時,就會發生此錯誤。 同處理序模型需要 ANCM 將 .NET Core 應用程式載入現有的 IIS 處理序。 單一檔案部署模型不支援此案例。 使用應用程式專案檔中的下列其中一種方法來修正此錯誤:

  1. PublishSingleFile MSBuild 屬性設定為 false,以停用單一檔案發佈。
  2. AspNetCoreHostingModel MSBuild 屬性設定為 OutOfProcess,以切換至跨處理序主控模型。

502.5 處理序失敗

背景工作處理序失敗。 應用程式未啟動。

ASP.NET Core 模組嘗試啟動背景工作處理序,但無法啟動。 通常從應用程式事件記錄檔和 ASP.NET Core 模組 stdout 記錄檔中的項目,即可判斷啟動失敗的原因。

因為目標 ASP.NET Core 共用架構的版本不存在,導致應用程式設定錯誤是常見的失敗狀況。 請檢查安裝在目標機器上的 ASP.NET Core 共用架構版本為何。 「共用的架構」是一組安裝於電腦上且由 Microsoft.AspNetCore.App 之類的中繼套件所參考的組件 (.dll 檔案)。 中繼套件參考可以指定最低必要版本。 如需詳細資訊,請參閱共用的架構 \(英文\)。

當裝載或應用程式設定錯誤造成背景工作處理序發生失敗時,會傳回 [502.5 處理序失敗] 錯誤頁面:

無法啟動應用程式 (ErrorCode '0x800700c1')

EventID: 1010
Source: IIS AspNetCore Module V2
Failed to start application '/LM/W3SVC/6/ROOT/', ErrorCode '0x800700c1'.

應用程式無法啟動,因為無法載入應用程式的組件 (.dll)。

當已發行的應用程式與 w3wp/iisexpress 處理序之間出現位元不符的情況時,就會發生此錯誤。

確認應用程式集區的 32 位元設定正確:

  1. 在 IIS 管理員的 [應用程式集區] 中,選取應用程式集區。
  2. 在 [動作] 面板中,選取 [編輯應用程式集區] 下的 [進階設定]
  3. 設定 [啟用 32 位元應用程式]
    • 如果部署 32 位元 (x86) 應用程式,請將值設定為 True
    • 如果部署 64 位元 (x64) 應用程式,請將值設定為 False

確認專案檔中的 <Platform> MSBuild 屬性與應用程式的已發佈位元之間沒有衝突。

無法啟動應用程式 (ErrorCode '0x800701b1')

EventID: 1010
Source: IIS AspNetCore Module V2
Failed to start application '/LM/W3SVC/3/ROOT', ErrorCode '0x800701b1'.

應用程式無法啟動,因為 Windows 服務無法載入。

需要啟用的一個常見服務是「Null」服務。 下列命令會啟用 null Windows 服務:

sc.exe start null

連線重設

如果是在傳送標頭之後才發生錯誤,則當發生錯誤時,伺服器已來不及傳送「500 內部伺服器錯誤」。 通常是在將回應的複雜物件序列化的期間發生錯誤時,會發生此錯誤。 這類錯誤會在用戶端上顯示為「連線重設」錯誤。 應用程式記錄可協助針對這些類型的錯誤進行疑難排解。

預設啟動限制

ASP.NET Core 模組上已設定預設的 startupTimeLimit 120 秒。 保留預設值時,在模組記錄處理序失敗之前,應用程式最多可花費兩分鐘來進行啟動。 如需有關設定模組的資訊,請參閱 aspNetCore 元素的屬性

針對 Azure App Service 進行疑難排解

重要

ASP.NET Core 預覽版本與 Azure App Service

根據預設,ASP.NET Core 預覽版本不會部署至 Azure App Service。 若要裝載使用 ASP.NET Core 預覽版本的應用程式,請參閱將 ASP.NET Core 預覽版本部署至 Azure App Service

Azure App Services 記錄串流

Azure App Services 記錄串流會在發生時記錄資訊。 若要檢視串流記錄:

  1. 在 Azure 入口網站的 [應用程式服務] 中,開啟應用程式。
  2. 在左窗格中,瀏覽至 [監視]> [App Service 記錄]App Service 記錄
  3. 針對 [Web 伺服器記錄] 選取 [檔案系統]。 選擇性地啟用 [應用程式記錄]啟用記錄
  4. 在左窗格中,瀏覽至 [監視]> [記錄串流],然後選取 [應用程式記錄] 或 [Web 伺服器記錄]

監視記錄資料流

下列影像顯示應用程式記錄輸出:

應用程式記錄

串流記錄有一些延遲,而且可能不會立即顯示。

應用程式事件記錄檔 (Azure App Service)

若要存取「應用程式事件記錄檔」,請使用 Azure 入口網站中的 [診斷並解決問題] 刀鋒視窗:

  1. 在 Azure 入口網站的 [應用程式服務] 中,開啟應用程式。
  2. 選取 [診斷並解決問題]
  3. 選取 [診斷工具] 標題。
  4. 在 [支援工具] 下,選取 [應用程式事件] 按鈕。
  5. 檢查 [來源] 資料行中 IIS AspNetCoreModuleIIS AspNetCoreModule V2 項目所提供的最新錯誤。

除了使用 [診斷並解決問題] 刀鋒視窗之外,也可以使用 Kudu 來直接檢查「應用程式事件記錄檔」:

  1. 在 [開發工具] 區域中,開啟 [進階工具]。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
  2. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]
  3. 開啟 [LogFiles] 資料夾。
  4. 選取 eventlog.xml 檔案旁的鉛筆圖示。
  5. 檢查記錄檔。 捲動至記錄檔的底部以查看最新事件。

在 Kudu 主控台中執行應用程式

許多啟動錯誤不會在「應用程式事件記錄檔」中產生實用的資訊。 您可以在 Kudu「遠端執行主控台」中執行應用程式來探索錯誤:

  1. 在 [開發工具] 區域中,開啟 [進階工具]。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
  2. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]

測試 32 位元 (x86) 應用程式

目前的版本

  1. cd d:\home\site\wwwroot
  2. 執行應用程式:

應用程式的主控台輸出 (顯示任何錯誤) 會以管道傳送至 Kudu 主控台。

在預覽版上執行的架構相依部署

要求安裝 ASP.NET Core {VERSION} (x86) 執行階段網站延伸模組。

  1. cd D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x32 ({X.Y} 是執行階段版本)
  2. 執行應用程式:dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll

應用程式的主控台輸出 (顯示任何錯誤) 會以管道傳送至 Kudu 主控台。

測試 64 位元 (x64) 應用程式

目前的版本

  • 如果應用程式是 64 位元 (x64) 架構相依部署
    1. cd D:\Program Files\dotnet
    2. 執行應用程式:dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll
  • 如果應用程式是自封式部署
    1. cd D:\home\site\wwwroot
    2. 執行應用程式:{ASSEMBLY NAME}.exe

應用程式的主控台輸出 (顯示任何錯誤) 會以管道傳送至 Kudu 主控台。

在預覽版上執行的架構相依部署

要求安裝 ASP.NET Core {VERSION} (x64) 執行階段網站延伸模組。

  1. cd D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x64 ({X.Y} 是執行階段版本)
  2. 執行應用程式:dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll

應用程式的主控台輸出 (顯示任何錯誤) 會以管道傳送至 Kudu 主控台。

ASP.NET Core 模組 stdout 記錄 (Azure App Service)

警告

如果無法停用 stdout 記錄檔,可能會造成應用程式或伺服器發生失敗。 因為它並沒有記錄檔大小或數量上的限制。 請只在針對應用程式啟動問題進行疑難排解時,才使用 stdout 記錄。

針對 ASP.NET Core 應用程式啟動後的一般記錄,請使用會限制記錄檔大小並輪替記錄檔的記錄程式庫。 如需詳細資訊,請參閱協力廠商記錄提供者

ASP.NET Core 模組 stdout 記錄檔通常會記錄「應用程式事件記錄檔」中所沒有的實用訊息。 啟用及檢視 stdout 記錄檔:

  1. 在 Azure 入口網站中,瀏覽至 Web 應用程式。
  2. 在 [App Service] 刀鋒視窗中,於搜尋方塊中輸入 kudu
  3. 選取 [進階工具]> [前往]
  4. 選取 [偵錯主控台] > [CMD]
  5. 瀏覽至 site/wwwroot
  6. 選取鉛筆圖示以編輯 web.config 檔案。
  7. <aspNetCore /> 元素中,設定 stdoutLogEnabled="true" 並選取 [儲存]

透過設定 stdoutLogEnabled="false" 完成疑難排解時,請停用 stdout 記錄。

如需詳細資訊,請參閱適用於 IIS 的 ASP.NET Core 模組 (ANCM)

ASP.NET Core 模組偵錯記錄 (Azure App Service)

ASP.NET Core 模組偵錯記錄提供 ASP.NET Core 模組中其他且更深入的記錄。 啟用及檢視 stdout 記錄檔:

  1. 若要啟用增強型診斷記錄,請執行下列任一動作:
    • 遵循增強型診斷記錄中的指示,來設定應用程式進行增強型診斷記錄。 重新部署應用程式。
    • 使用 Kudu 主控台,將增強型診斷記錄中所顯示的 <handlerSettings> 新增至即時應用程式的 web.config 檔案:
      1. 在 [開發工具] 區域中,開啟 [進階工具]。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
      2. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]
      3. 將資料夾開啟至路徑 [site]>[wwwroot]。 選取鉛筆圖示來編輯 web.config 檔案。 新增 <handlerSettings> 區段,如增強型診斷記錄中所示。 選取儲存按鈕。
  2. 在 [開發工具] 區域中,開啟 [進階工具]。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
  3. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]
  4. 將資料夾開啟至路徑 [site]>[wwwroot]。 如果未提供 aspnetcore-debug.log 檔案的路徑,該檔案會顯示在清單中。 如果已提供路徑,請巡覽至記錄檔的位置。
  5. 使用檔案名稱旁的鉛筆圖示來開啟記錄檔。

完成疑難排解時,請停用偵錯記錄:

若要停用增強型偵錯記錄,請執行下列任一動作:

  • web.config 檔案本機移除 <handlerSettings> 並重新部署應用程式。
  • 使用 Kudu 主控台來編輯 web.config 檔案並移除 <handlerSettings> 區段。 儲存檔案。

如需詳細資訊,請參閱使用 ASP.NET Core 模組建立及重新導向記錄

警告

無法停用偵錯記錄,可能會造成應用程式或伺服器發生失敗。 記錄檔大小沒有任何限制。 請只在針對應用程式啟動問題進行疑難排解時,才使用偵錯記錄。

針對 ASP.NET Core 應用程式啟動後的一般記錄,請使用會限制記錄檔大小並輪替記錄檔的記錄程式庫。 如需詳細資訊,請參閱協力廠商記錄提供者

應用程式緩慢或停止回應 (Azure App Service)

當應用程式針對要求回應緩慢或無回應時,請參閱針對 Azure App Service 中 Web 應用程式效能變慢的問題進行疑難排解

監視刀鋒視窗

監視刀鋒視窗為本主題稍早所述的方法提供替代的疑難排解體驗。 這些刀鋒視窗可用來診斷 500 系列的錯誤。

請確認已安裝 ASP.NET Core 延伸模組。 如果未安裝這些延伸模組,請手動安裝:

  1. 在 [開發工具] 刀鋒視窗區段中,選取 [延伸模組] 刀鋒視窗。
  2. [ASP.NET Core 延伸模組] 應該會出現在清單中。
  3. 如果未安裝這些延伸模組,請選取 [新增] 按鈕。
  4. 從清單中選擇 [ASP.NET Core 延伸模組]
  5. 選取 [確定] 以接受法律條款。
  6. 在 [新增延伸模組] 刀鋒視窗上,選取 [確定]
  7. 成功安裝延伸模組時,會有資訊快顯訊息提供指示。

如果未啟用 stdout 記錄,請依照下列步驟進行操作:

  1. 在 Azure 入口網站中,選取 [開發工具] 區域中的 [進階工具] 刀鋒視窗。 選取 [Go→] 按鈕。 Kudu 主控台會在新的瀏覽器索引標籤或視窗中開啟。
  2. 使用頁面頂端的導覽列,開啟 [偵錯主控台],然後選取 [CMD]
  3. 將資料夾開啟至路徑 [site]>[wwwroot],然後向下捲動以顯露位於清單底部的 web.config 檔案。
  4. 按一下 web.config 檔案旁邊的鉛筆圖示。
  5. stdoutLogEnabled 設定為 true,並將 stdoutLogFile 路徑變更為:\\?\%home%\LogFiles\stdout
  6. 選取 [儲存] 以儲存已更新的 web.config 檔案。

繼續接著啟用診斷記錄:

  1. 在 Azure 入口網站中,選取 [診斷記錄檔] 刀鋒視窗。
  2. 選取 [應用程式記錄 (檔案系統)] 和 [詳細錯誤訊息].的 [開啟] 開關。 選取刀鋒視窗頂端的 [儲存] 按鈕。
  3. 若要包含失敗要求追蹤 (也稱為「失敗要求事件緩衝處理」(FREB) 記錄),請選取 [失敗要求的追蹤] 的 [開啟] 開關。
  4. 選取 [記錄資料流] 刀鋒視窗 (列在入口網站中緊接在 [診斷記錄檔] 刀鋒視窗之下)。
  5. 對應用程式發出要求。
  6. 在記錄資料流資料內,會指出錯誤的原因。

完成疑難排解時,請務必停用 stdout 記錄。

檢視失敗要求追蹤記錄檔 (FREB 記錄檔):

  1. 在 Azure 入口網站中,瀏覽至 [診斷並解決問題] 刀鋒視窗。
  2. 從資訊看板的 [支援工具] 區域中,選取 [失敗要求追蹤記錄檔]

如需詳細資訊,請參閱<在 Azure App Service 中針對 Web 應用程式啟用診斷記錄功能>主題的<失敗要求追蹤>一節Azure Web 應用程式的應用程式效能常見問題集:如何開啟失敗要求追蹤?

如需詳細資訊,請參閱在 Azure App Service 中針對 Web 應用程式啟用診斷記錄功能

警告

如果無法停用 stdout 記錄檔,可能會造成應用程式或伺服器發生失敗。 因為它並沒有記錄檔大小或數量上的限制。

針對 ASP.NET Core 應用程式中的例行性記錄,請使用會限制記錄檔大小並輪替記錄檔的記錄程式庫。 如需詳細資訊,請參閱協力廠商記錄提供者

針對 IIS 進行疑難排解

應用程式事件記錄檔 (IIS)

存取「應用程式事件記錄檔」:

  1. 開啟 [開始] 功能表,搜尋事件檢視器,然後選取 [事件檢視器] 應用程式。
  2. 在 [事件檢視器] 中,開啟 [Windows 記錄] 節點。
  3. 選取 [應用程式] 以開啟「應用程式事件記錄檔」。
  4. 搜尋與失敗應用程式相關的錯誤。 錯誤在 [來源] 資料行中的值會是 IIS AspNetCore ModuleIIS Express AspNetCore Module

在命令提示字元中執行應用程式

許多啟動錯誤不會在「應用程式事件記錄檔」中產生實用的資訊。 您可以藉由在主控系統上的命令提示字元中執行應用程式,來找出一些錯誤的原因。

架構相依部署

如果應用程式是架構相依部署

  1. 在命令提示字元中,瀏覽至部署資料夾,然後使用 dotnet.exe 來執行應用程式組件以執行應用程式。 在下列命令中,請以應用程式組件的名稱取代 <assembly_name>:dotnet .\<assembly_name>.dll
  2. 來自應用程式的主控台輸出若有顯示任何錯誤,就會寫入至主控台視窗。
  3. 如果是在對應用程式發出要求時發生錯誤,請對 Kestrel 進行接聽的主機和連接埠發出要求。 如果使用預設主機和連接埠,請對 http://localhost:5000/ 發出要求。 如果應用程式在 Kestrel 端點位址正常回應,則問題與主機組態有關的機率較大,而與應用程式本身有關的機率較小。

自封式部署

如果應用程式是自封式部署

  1. 在命令提示字元中,瀏覽至部署資料夾,然後執行應用程式的可執行檔。 在下列命令中,請以應用程式組件的名稱取代 <assembly_name>:<assembly_name>.exe
  2. 來自應用程式的主控台輸出若有顯示任何錯誤,就會寫入至主控台視窗。
  3. 如果是在對應用程式發出要求時發生錯誤,請對 Kestrel 進行接聽的主機和連接埠發出要求。 如果使用預設主機和連接埠,請對 http://localhost:5000/ 發出要求。 如果應用程式在 Kestrel 端點位址正常回應,則問題與主機組態有關的機率較大,而與應用程式本身有關的機率較小。

ASP.NET Core 模組 stdout 記錄檔 (IIS)

啟用及檢視 stdout 記錄檔:

  1. 瀏覽至主控系統上網站的部署資料夾。
  2. 如果 [logs] 資料夾不存在,請建立該資料夾。 如需有關如何讓 MSBuild 在部署中自動建立 [logs] 資料夾的指示,請參閱目錄結構主題。
  3. 編輯 web.config 檔案。 將 stdoutLogEnabled 設定為 true,並將 stdoutLogFile 路徑變更為指向 [logs] 資料夾 (例如 .\logs\stdout)。 路徑中的 stdout 是記錄檔名稱前置詞。 建立記錄檔時,系統會自動新增時間戳記、處理序識別碼及副檔名。 使用 stdout 作為檔案名稱前置詞時,一般記錄檔會命名為 stdout_20180205184032_5412.log
  4. 請確定您的應用程式集區身分識別具有 logs 資料夾的寫入權限。
  5. 儲存已更新的 web.config 檔案。
  6. 對應用程式發出要求。
  7. 瀏覽至 [logs] 資料夾。 尋找並開啟最新的 stdout 記錄檔。
  8. 研究記錄檔以了解錯誤。

完成疑難排解時,請停用 stdout 記錄:

  1. 編輯 web.config 檔案。
  2. stdoutLogEnabled 設定為 false
  3. 儲存檔案。

如需詳細資訊,請參閱適用於 IIS 的 ASP.NET Core 模組 (ANCM)

警告

如果無法停用 stdout 記錄檔,可能會造成應用程式或伺服器發生失敗。 因為它並沒有記錄檔大小或數量上的限制。

針對 ASP.NET Core 應用程式中的例行性記錄,請使用會限制記錄檔大小並輪替記錄檔的記錄程式庫。 如需詳細資訊,請參閱協力廠商記錄提供者

ASP.NET Core 模組偵錯記錄 (IIS)

將下列處理常式設定新增至應用程式的 web.config 檔案,以啟用 ASP.NET Core 模組偵錯記錄:

<aspNetCore ...>
  <handlerSettings>
    <handlerSetting name="debugLevel" value="file" />
    <handlerSetting name="debugFile" value="c:\temp\ancm.log" />
  </handlerSettings>
</aspNetCore>

確認為記錄指定的路徑存在,而且應用程式集區的身分識別具有該位置的寫入權限。

如需詳細資訊,請參閱使用 ASP.NET Core 模組建立及重新導向記錄

啟用開發人員例外頁面

在開發環境中,可以將 ASPNETCORE_ENVIRONMENT環境變數新增至 web.config 來執行應用程式。 只要主機產生器上的 UseEnvironment 不會覆寫應用程式啟動內的環境,設定該環境變數便可允許在應用程式執行時顯示開發人員例外狀況頁面

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout"
      hostingModel="InProcess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
  </environmentVariables>
</aspNetCore>

只有在沒有對網際網路公開的暫存和測試伺服器上使用時,才建議為 ASPNETCORE_ENVIRONMENT 設定環境變數。 進行疑難排解之後,請從 web.config 檔案中移除環境變數。 如需有關在 web.config 中設定環境變數的資訊,請參閱 aspNetCore 的 environmentVariables 子元素

從應用程式取得資料

若應用程式能夠回應要求、請使用終端機內嵌中介軟體從應用程式取得要求、連線與額外資料。 如需詳細資訊和範例程式碼,請參閱針對 ASP.NET Core 專案進行疑難排解和偵錯

回應緩慢或無回應的應用程式 (IIS)

「損毀傾印」是系統記憶體的快照集,可協助您判斷應用程式損毀、啟動失敗或應用程式緩慢的原因。

應用程式損毀或發生例外狀況

Windows 錯誤報告 (WER) 取得並分析傾印:

  1. c:\dumps 中建立資料夾以保存損毀傾印檔案。 應用程式集區必須具備該資料夾的寫入權限。

  2. 執行 EnableDumps PowerShell 指令碼

    • 如果應用程式是使用同處理序主控模型,請執行 w3wp.exe 的指令碼:

      .\EnableDumps w3wp.exe c:\dumps
      
    • 如果應用程式是使用跨處理序主控模型,請執行 dotnet.exe 的指令碼:

      .\EnableDumps dotnet.exe c:\dumps
      
  3. 在會導致損毀的情況下,執行應用程式。

  4. 發生損毀之後,請執行 DisableDumps PowerShell 指令碼

在應用程式損毀且傾印收集完成之後,即可正常結束應用程式。 PowerShell 指令碼會將 WER 設定為每個應用程式收集最多五個傾印。

警告

損毀傾印可能會佔用大量磁碟空間 (每個高達好幾 GB)。

應用程式停止回應、在啟動期間失敗,或正常執行

當應用程式停止回應 (停止回應但不會當機)、在啟動期間失敗或正常執行時,請參閱使用者模式傾印檔案:選擇最佳工具以選取適當的工具來產生傾印。

分析傾印

您可以使用數種方法來分析傾印。 如需詳細資訊,請參閱分析使用者模式傾印檔案

清除套件快取

在升級開發電腦上的 .NET Core SDK 或變更應用程式內的套件版本之後,正常運作的應用程式便立即發生失敗。 在某些情況下,執行主要升級時,不一致的套件可能會中斷應用程式。 大多數這些問題都可依照下列指示來進行修正:

  1. 刪除 [bin] 和 [obj] 資料夾。

  2. 您可以從命令殼層執行 dotnet nuget locals all --clear 來清除套件快取。

    您也可以使用 nuget.exe 工具並執行 nuget locals all -clear 命令,來清除套件快取。 nuget.exe 並未隨附在 Windows 桌面作業系統的安裝中,必須另外從 NuGet 網站取得。

  3. 還原並重建專案。

  4. 在重新部署應用程式之前,請先刪除伺服器上部署資料夾中的所有檔案。

收集狀態碼和記錄項目

當在 IIS 上執行的 ASP.NET Core 應用程式遇到錯誤時,請收集資訊以協助診斷問題。 以下資訊對於疑難排解很有用:收集以下資訊:

將錯誤資訊與下列常見錯誤進行比較。 如果找到相符情況,請依照疑難排解建議進行操作。

本主題中的錯誤清單並不完整。 如果您遇到這裡未列出的錯誤,請使用本主題底部的 [內容意見反應] 按鈕來開啟新的問題,並提供如何重現錯誤的詳細指示。

重要

ASP.NET Core 預覽版本與 Azure App Service

根據預設,ASP.NET Core 預覽版本不會部署至 Azure App Service。 若要裝載使用 ASP.NET Core 預覽版本的應用程式,請參閱將 ASP.NET Core 預覽版本部署至 Azure App Service

作業系統升級已移除 32 位元的 ASP.NET Core 模組

應用程式記錄檔:無法載入模組 DLL C:\WINDOWS\system32\inetsrv\aspnetcore.dll。 資料即錯誤。

疑難排解:

作業系統升級時不會保留 C:\Windows\SysWOW64\inetsrv 目錄中的非作業系統檔案。 如果先安裝 ASP.NET Core 模組再升級 OS,然後在 OS 升級之後以 32 位元模式執行任何應用程式集區,就會發生此問題。 作業系統升級之後,請修復 ASP.NET Core 模組。 請參閱安裝 .NET Core 裝載套件組合。 執行安裝程式時,請選取 [修復]

遺失網站延伸模組、已安裝 32 位元 (x86) 和 64 位元 (x64) 網站延伸模組,或錯誤的處理序位元集合

適用於 Azure 應用程式服務所裝載的應用程式。

  • 瀏覽器:HTTP 錯誤 500.0 - ANCM 同處理序處理常式載入失敗

  • 應用程式記錄檔:叫用 hostfxr 以尋找同處理序要求處理常式失敗,而不會尋找任何原生相依性。 找不到同處理序要求處理常式。 已從叫用的 hostfxr 擷取輸出:找不到任何相容的架構版本。 找不到指定的架構 'Microsoft.AspNetCore.App' 版本 '{VERSION}-preview-*'。 無法啟動應用程式 '/LM/W3SVC/1416782824/ROOT', ErrorCode '0x8000ffff'。

  • ASP.NET Core 模組 stdout 記錄檔:找不到任何相容的架構版本。 找不到指定的架構 'Microsoft.AspNetCore.App' 版本 '{VERSION}-preview-*'。

  • ASP.NET Core 模組偵錯記錄:叫用 hostfxr 以尋找同處理序要求處理常式失敗,而不會尋找任何原生相依性。 這最有可能表示應用程式設定不正確,請檢查應用程式設為目標的 Microsoft.NetCore.App 和 Microsoft.AspNetCore.App 版本,並確定已安裝在電腦上。 已傳回失敗的 HRESULT:0x8000ffff。 找不到同處理序要求處理常式。 無法找到任何相容的架構版本。 找不到指定的架構 'Microsoft.AspNetCore.App' 版本 '{VERSION}-preview-*'。

疑難排解:

  • 如果在預覽執行階段中執行應用程式,請安裝與應用程式位元和應用程式執行階段版本相符的 32 位元 (x86) 64 位元 (x64) 網站延伸模組。 請勿同時安裝這兩個延伸模組或延伸模組的多個執行階段版本。

    • ASP.NET Core {RUNTIME VERSION} (x86) 執行階段
    • ASP.NET Core {RUNTIME VERSION} (x64) 執行階段

    重新啟動應用程式。 請等候數秒,讓應用程式重新啟動。

  • 如果在預覽執行階段中執行應用程式,而且已經安裝 32 位元 (x86) 和 64 位元 (x64) 網站延伸模組,請將與應用程式位元不符的網站延伸模組解除安裝。 移除網站延伸模組之後,請重新啟動應用程式。 請等候數秒,讓應用程式重新啟動。

  • 如果在預覽執行階段中執行應用程式,且網站延伸模組位元與應用程式相符,請確認預覽網站延伸模組的「執行階段版本」是否與應用程式相符。

  • 確認應用程式設定中應用程式的平台與應用程式位元相符。

如需詳細資訊,請參閱將 ASP.NET Core 應用程式部署至 Azure App Service

已部署 x86 應用程式,但未啟用 32 位元應用程式的應用程式集區

  • 瀏覽器:HTTP 錯誤 500.30 - ANCM 同處理序啟動失敗

  • 應用程式記錄檔:實體根目錄為 '{PATH}' 的應用程式 '/LM/W3SVC/5/ROOT' 遇到未預期的受控例外狀況,例外狀況代碼 = '0xe0434352'。 如需詳細資訊,請檢查 stderr 記錄檔。 實體根目錄為 '{PATH}' 的應用程式 '/LM/W3SVC/5/ROOT' 無法載入 CLR 和受控應用程式。 CLR 背景工作執行緒不當結束

  • ASP.NET Core 模組 stdout 記錄檔:已建立記錄檔,但是空的。

  • ASP.NET Core 核心模組偵錯記錄:已傳回失敗的 HRESULT:0x8007023e

SDK 會在發行獨立應用程式時攔截到此案例。 如果 RID 不符合平台目標 (例如 win10-x64 RID 在專案檔中使用 <PlatformTarget>x86</PlatformTarget>),SDK 就會產生錯誤。

疑難排解:

針對 x86 架構相依部署 (<PlatformTarget>x86</PlatformTarget>),請啟用 32 位元應用程式的 IIS 應用程式集區。 在 [IIS 管理員] 中,開啟應用程式集區的 [進階設定],然後將 [啟用 32 位元應用程式] 設定為 [True]

平台發生 RID 衝突

  • 瀏覽器:HTTP 錯誤 502.5 - 處理序失敗

  • 應用程式記錄檔:實體根目錄為 'C:{PATH}' 的應用程式 'MACHINE/WEBROOT/APPHOST/{ASSEMBLY}' 無法使用命令列 '"C:{PATH}{ASSEMBLY}.{exe|dll}" ' 來啟動處理序,ErrorCode = '0x80004005:ff。

  • ASP.NET Core 模組 stdout 記錄檔:無法處理的例外狀況:System.BadImageFormatException:無法載入檔案或組件 '{ASSEMBLY}.dll'。 嘗試載入了格式不正確的程式。

疑難排解:

  • 確認應用程式在 Kestrel 本機上執行。 處理序失敗,可能是因為應用程式發生問題。 如需詳細資訊,請參閱針對 Azure App Service 和 IIS 上的 ASP.NET Core 進行疑難排解

  • 如果在升級應用程式和部署更新的組件時,Azure 應用程式部署發生這個例外狀況,請手動刪除來自先前部署的所有檔案。 部署升級的應用程式時,延遲不相容的組件會導致 System.BadImageFormatException 例外狀況。

URI 端點錯誤或停止了網站

  • 瀏覽器:ERR_CONNECTION_REFUSED --或-- 無法連線

  • 應用程式記錄檔:無項目

  • ASP.NET Core 模組 stdout 記錄檔:未建立記錄檔。

  • ASP.NET Core 模組偵錯記錄:未建立記錄檔。

疑難排解:

  • 確認使用對應用程式正確的 URI 端點。 檢查繫結。

  • 確認 IIS 網站不是處於「已停止」狀態。

已停用 CoreWebEngine 或 W3SVC 伺服器功能

作業系統例外狀況:必須安裝 IIS 7.0 CoreWebEngine 和 W3SVC 功能,才能使用 ASP.NET Core 模組。

疑難排解:

確認已啟用適當的角色和功能。 請參閱 IIS 組態

不正確的網站實體路徑或遺失應用程式

  • 瀏覽器: 403 禁止 - 存取被拒--或-- 403.14 禁止 - 網頁伺服器已設為不列出此目錄的內容。

  • 應用程式記錄檔:無項目

  • ASP.NET Core 模組 stdout 記錄檔:未建立記錄檔。

  • ASP.NET Core 模組偵錯記錄:未建立記錄檔。

疑難排解:

檢查 IIS 網站的 [基本設定] 和實體的應用程式資料夾。 確認應用程式位於 IIS 網站實體路徑的資料夾中。

角色不正確、ASP.NET Core 模組未安裝,或權限不正確

  • 瀏覽器:500.19 內部伺服器錯誤 - 無法存取所要求的網頁,因為該頁面的相關組態資料無效。 --或-- 無法顯示此頁面

  • 應用程式記錄檔:無項目

  • ASP.NET Core 模組 stdout 記錄檔:未建立記錄檔。

  • ASP.NET Core 模組偵錯記錄:未建立記錄檔。

疑難排解:

  • 確認已啟用適當的角色。 請參閱 IIS 組態

  • 開啟 [程式和功能] 或 [應用程式與功能],並確認已安裝 Windows Server Hosting。 如果已安裝的程式清單中沒有 Windows Server Hosting,請下載並安裝 .NET Core 裝載套件組合。

    目前的 .NET Core 裝載套件組合安裝程式 (直接下載)

    如需詳細資訊,請參閱安裝 .NET Core 裝載套件組合

  • 確定 [應用程式集區] > [處理序模型] >Identity 設定為 ApplicationPoolIdentity,或自訂身分識別具有正確的權限,可存取應用程式的部署資料夾。

  • 若解除安裝 ASP.NET Core Hosting Bundle 並安裝舊版裝載套件組合,applicationHost.config 檔案不會包括 ASP.NET Core Module 的區段。 開啟位於 %windir%/System32/inetsrv/configapplicationHost.config,然後尋找 <configuration><configSections><sectionGroup name="system.webServer"> 區段群組。 若區段群組中沒有 ASP.NET Core Module 的區段,請新增區段元素:

    <section name="aspNetCore" overrideModeDefault="Allow" />
    

    或者,您也可以安裝最新版的「ASP.NET Core 裝載套件組合」。 最新版本回溯相容,提供支援的 ASP.NET Core 應用程式。

不正確的 processPath、遺失 PATH 變數、未安裝裝載套件組合、未重新啟動系統/IIS、未安裝 VC++ 可轉散發套件或 dotnet.exe 存取違規

  • 瀏覽器:HTTP 錯誤 500.0 - ANCM 同處理序處理常式載入失敗

  • 應用程式記錄檔:實體根目錄為 'C:{PATH}' 的應用程式 'MACHINE/WEBROOT/APPHOST/{ASSEMBLY}' 無法使用命令列 '"{...}" ' 來啟動處理序,ErrorCode = '0x80070002:0。 應用程式 '{PATH}' 無法啟動。 在 '{PATH}' 找不到可執行檔。 無法啟動應用程式 '/LM/W3SVC/2/ROOT',ErrorCode '0x8007023e'。

  • ASP.NET Core 模組 stdout 記錄檔:未建立記錄檔。

  • ASP.NET Core 模組偵錯記錄:事件記錄檔:無法啟動應用程式 '{PATH}'。 在 '{PATH}' 找不到可執行檔。 已傳回失敗的 HRESULT:0x8007023e

疑難排解:

  • 確認應用程式在 Kestrel 本機上執行。 處理序失敗,可能是因為應用程式發生問題。 如需詳細資訊,請參閱針對 Azure App Service 和 IIS 上的 ASP.NET Core 進行疑難排解

  • 檢查 web.config<aspNetCore> 元素上的 processPath 屬性,以確認它是 dotnet (適用於架構相依部署 (FDD)) 或 .\{ASSEMBLY}.exe (適用於自封式部署 (SCD))。

  • 若為 FDD,可能無法透過路徑設定存取 dotnet.exe。 確認系統 PATH 設定中有 C:\Program Files\dotnet\

  • 若為 FDD,應用程式集區的使用者身分識別可能無法存取 dotnet.exe。 確認應用程式集區使用者身分識別可以存取 C:\Program Files\dotnet 目錄。 確認 C:\Program Files\dotnet 和應用程式目錄上未針對應用程式集區使用者身分識別設定任何拒絕規則。

  • 可能已部署 FDD 並安裝 .NET Core,但未重新啟動 IIS。 從命令提示字元依序執行 net stop was /ynet start w3svc,重新啟動伺服器或重新啟動 IIS。

  • 可能已部署 FDD,但未在主控系統上安裝 .NET Core 執行階段。 如果尚未安裝 .NET Core 執行階段,請在系統上執行「.NET Core 裝載套件組合安裝程式」

    目前的 .NET Core 裝載套件組合安裝程式 (直接下載)

    如需詳細資訊,請參閱安裝 .NET Core 裝載套件組合

    如果需要特定執行階段,則請從 .NET 下載頁面下載執行階段,並將其安裝在系統上。 從命令提示字元依序執行 net stop was /ynet start w3svc,透過重新啟動系統或重新啟動 IIS 來完成安裝。

不正確的 <aspNetCore> 元素引數

  • 瀏覽器:HTTP 錯誤 500.0 - ANCM 同處理序處理常式載入失敗

  • 應用程式記錄檔:叫用 hostfxr 以尋找同處理序要求處理常式失敗,而不會尋找任何原生相依性。 這最有可能表示應用程式設定不正確,請檢查應用程式設為目標的 Microsoft.NetCore.App 和 Microsoft.AspNetCore.App 版本,並確定已安裝在電腦上。 找不到同處理序要求處理常式。 已從叫用的 hostfxr 擷取輸出:您是否表示要執行 dotnet SDK 命令? 請從下列位置安裝 dotnet SDK:https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409 無法啟動應用程式 '/LM/W3SVC/3/ROOT', ErrorCode '0x8000ffff'。

  • ASP.NET Core 模組 stdout 記錄檔:您是否想要執行 dotnet SDK 命令? 請從下列位置安裝 dotnet SDK:https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409

  • ASP.NET Core 模組偵錯記錄:叫用 hostfxr 以尋找同處理序要求處理常式失敗,而不會尋找任何原生相依性。 這最有可能表示應用程式設定不正確,請檢查應用程式設為目標的 Microsoft.NetCore.App 和 Microsoft.AspNetCore.App 版本,並確定已安裝在電腦上。 已傳回失敗的 HRESULT:0x8000ffff 找不到同處理序要求處理常式。 已從叫用的 hostfxr 擷取輸出:您是否表示要執行 dotnet SDK 命令? 請從下列位置安裝 dotnet SDK:https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409 已傳回失敗的 HRESULT:0x8000ffff

疑難排解:

  • 確認應用程式在 Kestrel 本機上執行。 處理序失敗,可能是因為應用程式發生問題。 如需詳細資訊,請參閱針對 Azure App Service 和 IIS 上的 ASP.NET Core 進行疑難排解

  • 檢查 web.config<aspNetCore> 元素上的 arguments 屬性,以確認它是 (a) .\{ASSEMBLY}.dll (適用於架構相依部署 (FDD));或 (b) 不存在、空字串 (arguments=""),或是應用程式的引數清單 (arguments="{ARGUMENT_1}, {ARGUMENT_2}, ... {ARGUMENT_X}",適用於自封式部署 (SCD))。

遺失 .NET Core 共用架構

  • 瀏覽器:HTTP 錯誤 500.0 - ANCM 同處理序處理常式載入失敗

  • 應用程式記錄檔:叫用 hostfxr 以尋找同處理序要求處理常式失敗,而不會尋找任何原生相依性。 這最有可能表示應用程式設定不正確,請檢查應用程式設為目標的 Microsoft.NetCore.App 和 Microsoft.AspNetCore.App 版本,並確定已安裝在電腦上。 找不到同處理序要求處理常式。 已從叫用的 hostfxr 擷取輸出:找不到任何相容的架構版本。 找不到指定的架構 'Microsoft.AspNetCore.App' 版本 '{VERSION}'。

無法啟動應用程式 '/LM/W3SVC/5/ROOT',ErrorCode '0x8000ffff'。

  • ASP.NET Core 模組 stdout 記錄檔:找不到任何相容的架構版本。 找不到指定的架構 'Microsoft.AspNetCore.App' 版本 '{VERSION}'。

  • ASP.NET Core 模組偵錯記錄:已傳回失敗的 HRESULT:0x8000ffff

疑難排解:

若為結構相依部署 (FDD),請確認已在系統上安裝正確的執行階段。

已停止應用程式集區

  • 瀏覽器:503 服務無法使用

  • 應用程式記錄檔:無項目

  • ASP.NET Core 模組 stdout 記錄檔:未建立記錄檔。

  • ASP.NET Core 模組偵錯記錄:未建立記錄檔。

疑難排解:

確認「應用程式集區」不是處於「已停止」狀態。

子應用程式包含<處理常式>區段

  • 瀏覽器:HTTP 錯誤 500.19 - 內部伺服器錯誤

  • 應用程式記錄檔:無項目

  • ASP.NET Core 模組 stdout 記錄檔:根應用程式的記錄檔已建立並顯示正常作業。 未建立子應用程式的記錄檔。

  • ASP.NET Core 模組偵錯記錄:根應用程式的記錄檔已建立並顯示正常作業。 未建立子應用程式的記錄檔。

疑難排解:

請確認子應用程式的 web.config 檔案不包含 <handlers> 區段,或子應用程式未繼承父應用程式的處理常式。

父應用程式 web.config<system.webServer> 區段位於 <location> 元素內。 將 InheritInChildApplications 屬性設定為 false,以指出位在父代應用程式子目錄中的應用程式不會繼承 <location> 元素內所指定的設定。 如需詳細資訊,請參閱適用於 IIS 的 ASP.NET Core 模組 (ANCM)

stdout 記錄檔路徑不正確

  • 瀏覽器:應用程式正常回應。

  • 應用程式記錄檔:無法在 C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll 中啟動 stdout 重新導向。 例外狀況訊息:已在 {PATH}\aspnetcoremodulev2\commonlib\fileoutputmanager.cpp:84 傳回 HRESULT 0x80070005。 無法在 C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll 中停止 stdout 重新導向。 例外狀況訊息:已在 {PATH} 傳回 HRESULT 0x80070002。 無法在 {PATH}\aspnetcorev2_inprocess.dll 中啟動 stdout 重新導向。

  • ASP.NET Core 模組 stdout 記錄檔:未建立記錄檔。

  • ASP.NET Core 模組偵錯記錄:無法在 C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll 中啟動 stdout 重新導向。 例外狀況訊息:已在 {PATH}\aspnetcoremodulev2\commonlib\fileoutputmanager.cpp:84 傳回 HRESULT 0x80070005。 無法在 C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll 中停止 stdout 重新導向。 例外狀況訊息:已在 {PATH} 傳回 HRESULT 0x80070002。 無法在 {PATH}\aspnetcorev2_inprocess.dll 中啟動 stdout 重新導向。

疑難排解:

應用程式組態一般問題

  • 瀏覽器:HTTP 錯誤 500.0 - ANCM 同處理序處理常式載入失敗 --或-- HTTP 錯誤 500.30 - ANCM 同處理序啟動失敗

  • 應用程式記錄檔:變數

  • ASP.NET Core 模組 stdout 記錄檔:在應用程式失敗之前,已建立記錄檔但是空的,或已使用一般項目建立記錄檔。

  • ASP.NET Core 模組偵錯記錄:變數

疑難排解:

處理序無法啟動,最可能的原因是應用程式組態或程式設計問題。

如需詳細資訊,請參閱下列主題:

其他資源

Azure 文件

Visual Studio 文件

Visual Studio Code 文件