簡體   English   中英

HTTP 錯誤 500.32 - 將自包含 .Net Core 3.1 應用程序部署到 Azure 后,ANCM 無法加載 dll

[英]HTTP Error 500.32 - ANCM Failed to Load dll after deploying a Self Contained .Net Core 3.1 App to Azure

我有一個部署到 Azure 應用服務(基於西歐/Windows)的 Asp .NET Core 3.1 應用程序。 當我使用依賴於框架的部署模式時,應用程序啟動順利。

但是,當我嘗試切換到自包含部署時,應用程序無法啟動並收到一條錯誤消息: HTTP 錯誤 500.30 - ANCM 進程內啟動失敗

將運行時從 win-x86 更改為 x64 並沒有解決問題。

我檢查了安裝的 App Server 運行時版本,看起來運行時可用(參見下面的屏幕截圖)。

我究竟做錯了什么?

服務器安裝的運行時

如果上述內容不能解決您的問題,並且您在https://github.com/dotnet/aspnetcore/issues/8980 中錯過了它,但這解決了我的問題。

Per DimaSUN 在 2019 年 6 月 25 日評論:

ASP.NET Core 2.2 或更高版本:對於使用進程內托管模型的 64 位 (x64) 自包含部署,禁用 32 位 (x86) 進程的應用程序池。

如何:在 IIS 中打開應用程序池。 選擇網站 > 高級設置。 將 32 位應用程序從 True 設置為 False。

對於 .net 5,問題是相同的,我必須從 web.config 中刪除 hostsModel="inprocess" 所以它閱讀以下內容

<?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=".\Hub.WebApi.exe" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout"  />
 </system.webServer>
</location>
</configuration>

您是否嘗試過在您的應用服務中添加 .Net Core 3.1 擴展? 開發工具 -> 擴展 -> 添加 -> Asp.Net Core 3.1 以及您需要的運行時。

我昨天遇到了同樣的問題,添加擴展后,問題就消失了。

如果它可以幫助其他任何人......我的Program.cs仍然有UseKestrel() (考慮到其他人提到托管模型是罪魁禍首,這是有道理)。

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder => {
            webBuilder.UseKestrel(k => k.AddServerHeader = false);
            webBuilder.UseStartup<Startup>();
        });

移除 Kestrel(自然地)可以緩解這個問題。

我最終也在Kudu 調試控制台中看到了這一點......

應用程序在 IIS 進程內運行,但未配置為使用 IIS 服務器

此錯誤提供的故障排除提示完全無關,這也可能是由於應用程序池帳戶對.NET Core應用程序源目錄的權限不足造成的。

當服務帳戶只有讀取權限時,我收到此錯誤。 添加讀取和執行權限后(因為應用程序是.exe ),錯誤消失了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM