Asp.Net Core 3.1發佈IIS報錯 HTTP Error 500.30 - ANCM In-Process Start Failure

HTTP Error 500.30 - ANCM In-Process Start Failure
Common causes of this issue:
The application failed to start
The application started but then stopped
The application started but threw an exception during startup
Troubleshooting steps:
Check the system event log for error messages
Enable logging the application process' stdout messages
Attach a debugger to the application process and inspect
For more information visit: https://go.microsoft.com/fwlink/?LinkID=2028265

可以按照報錯提示查看更改信息 Azure App Service 和 IIS 上的 ASP.NET Core 疑難解答 | Microsoft Docs

其實按照現有的提示可以瞭解到錯誤原因,進程內啓動失敗,改爲進程外託管即可。

500.30 進程內啓動失敗
工作進程失敗。 應用不啓動。
ASP.NET Core 模塊嘗試在進程中啓動 .NET Core CLR,但無法啓動。 通常,可以根據應用程序事件日誌中的條目和 ASP.NET Core 模塊 stdout 日誌中的條目來確定進程啓動失敗的原因。
常見的失敗情況是,由於目標 ASP.NET Core 共享框架版本不存在,因此應用配置錯誤。 檢查目標計算機上安裝的 ASP.NET Core 共享框架版本。

根據 ASP.NET Core 模塊 | Microsoft Docs 可知,默認配置是進程內託管,設爲 InProcess,顯示指定Web項目爲進程外託管

<PropertyGroup>
  <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

分析報錯原因:
報錯的web.config配置文件如下

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath=".\JobWanted.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: f0cca8c5-a238-40ff-9989-476b54dc1e72-->

注意processPath,作用是爲 HTTP 請求啓動進程偵聽的可執行文件的路徑
processPath=".\JobWanted.exe" 說明 Web需要請求轉發給 Kestrel 服務器
根據 ASP.NET Core 模塊 | Microsoft Docs 開篇的介紹,顯然應該使用進程外託管模型。

ASP.NET Core 模塊是插入 IIS 管道的本機 IIS 模塊,用於:

  • 在 IIS 工作進程 (w3wp.exe) 內託管 ASP.NET Core 應用,稱爲進程內託管模型。
  • 將 Web 請求轉發到運行 Kestrel 服務器的後端 ASP.NET Core 應用,稱爲進程外託管模型。

配置進程外託管模型,重新發布之後web.config文件內容變更如下。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath=".\JobWanted.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="OutOfProcess" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: f0cca8c5-a238-40ff-9989-476b54dc1e72-->

再次訪問,問題解決!

參考:HTTP Error 500.30 - ANCM In-Process Start Failure 解決方法 - 妖精的尾巴

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章