簡體   English   中英

面向.NET 4.6.1的ASP.NET Core 2.0應用無法在IIS上托管

[英]ASP.NET Core 2.0 app targeting .NET 4.6.1 fails to host on IIS

問題

IIS ASP.NET Core模塊無法啟動ASP.NET Core 2.0應用程序。

瀏覽器: HTTP錯誤502.5-進程失敗

Windows事件日志:具有物理根目錄“ C:\\inetpub\\apps\\AppFolder\\ ”的應用程序“ MACHINE/WEBROOT/APPHOST/AppSite ”無法通過命令行“ C:\\inetpub\\apps\\AppFolder\\App.exe ”啟動進程,ErrorCode =' 0x80004005: 1 '。

ASP.NET Core模塊日志:日志文件已創建但為空。


設置

應用:針對.NET Framework 4.6.1的ASP.NET Core 2.0。

服務器: Windows Server 2012 R2 Standard 6.2.9200和IIS 8.5.9600。


故事

我們使用Visual Studio 2017中提供的默認項目模板創建了一個空白的MVC Web應用程序。

該應用程序是按照官方規范進行部署的: https : //docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/

混淆主要來自以下兩點

  1. 在Kestrel上通過命令行運行應用程序即可。
  2. 運行不同的應用程序但以.NET Core 2.0為目標並以依賴於框架的方式發布在IIS上可以完美地工作。 但是在這兩個應用程序之間:代碼庫是相同的,IIS網站和應用程序池是相同的,我們甚至清空了應用程序目錄並使用了相同的目錄。

由於這些原因,唯一的區別似乎是net461應用程序的可執行文件。

我們沒有完全控制要在其中部署Windows Server的權限,但是我們有管理員帳戶。 當前的假設是問題出在權限之內-可能是AD組策略,防病毒軟件阻止了該文件,但我們仍在等待客戶端sysadmins的響應。 同時,在嘗試在我們的開發計算機上設置這些限制時,我們無法復制錯誤代碼“ 0x80004005: 1 ”。

這是關於我們在解決問題時嘗試過的問題的觀點和要點的不完整列表:

  • 初始應用程序(定位為net461)在IIS上部署到其他服務器(Windows 10企業版,Windows Server 2012 R2數據中心)時可完美運行。
  • 重新安裝不同版本的ASP.NET Core / .NET Core:運行時和主機捆綁包。
  • 將NTFS權限設置為dotnet文件夾。
  • 將IIS應用程序池標識更改為管理員帳戶。
  • 重新啟動服務器。
  • 遍歷本地組和安全策略。
  • 查看防病毒設置和日志。
  • 嘗試在全新服務器上部署(相同的操作系統,相同的配置)。

所有想法/評論都將不勝感激。 越模糊越好。

編輯:

由於已將其標記為ASP.NET Core 0x80004005的可能重復項,因此我需要指定為什么它不是重復項。

  • 引用的項目是ASP.NET Core的舊版本(project.json的最后使用是在2016年)
  • 所引用的項目針對的是.NET Core,而不是.NET 4.6.1。 這里還提到,針對此問題,將.NET Core作為目標可在IIS上運行。
  • 選定的答案指出,他們通過以下方式解決了問題:

    原來,這是需要安裝一些Windows更新和以下問題的結果:

    打開Microsoft Office文件時缺少api-ms-win-crt-runtime-l1-1-0.dll

    我沒有安裝上一期中討論的版本,而是進入“程序和功能”並在Microsoft Visual C ++ 2015 Redistributable上進行了修復。

    但是Microsoft Visual C ++ 2015 Redistributable的安裝是官方安裝指南中的步驟之一,並且在此還提到在安裝過程中遵循了官方指南。

  • 我們已經查看了該帖子,並嘗試修復並重新安裝Microsoft Visual C ++ 2015 Redistributable運行時組件,但這不能解決問題。

如果將來有人偶然發現此帖子:

問題確實出在服務器的防病毒中。 它並沒有直接阻止應用程序的可執行文件,而是調用了系統文件夾中的類庫。 此終止未引發任何常規警報。

The application "C:\inetpub\apps\AppFolder\App.exe" attempted to load the library "bcrypt.dll" by calling the function "LoadLibraryExW". The operation was blocked and the application terminated.

將MVC空白應用程序切換為完全空白的Hello-World應用程序后,它成功運行。

暫無
暫無

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

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