簡體   English   中英

HTTP 錯誤 503。服務不可用。 應用程序池在訪問網站時停止

[英]HTTP Error 503. The service is unavailable. App pool stops on accessing website

關於這個有很多帖子,我現在已經嘗試了很多東西。 但無濟於事。 我自己基本上是一個 Winforms 開發人員,幾天前開始研究這個 Web 的東西,因為我的公司正在采取 Web 計划。

我有一個 ASP.Net 項目,我想將它托管在本地 IIS 上。在Project properties -> Web設置中,我選擇了Use Local IIS Server並將 url 作為localhost/MyApp 我嘗試在我的 firefox 瀏覽器上訪問它並收到錯誤HTTP Error 503. The service is unavailable.

以前我有很多其他錯誤,我都一一修復了。 但是被這個擊中了。 這些是我在項目中的設置

  1. 應用程序池設置為 ASP.Net v4.0 Classic
  2. 應用程序池Enable 32 bit Application屬性為真
  3. 應用程序池已啟動
  4. 項目構建屬性設置為目標框架的Any CPU

但我想提一個奇怪的行為。 以下是我面臨的事情

  1. 應用程序池已啟動
  2. 我嘗試訪問我的本地網站(通過將 url 作為localhost/MyApp提供)
  3. 我收到錯誤HTTP Error 503. The service is unavailable
  4. 應用程序池已停止

我看到了以下鏈接,並且已經嘗試過了。 對於上述行為,我到達了這里 根據此鏈接,計算機名稱不應包含. 在里面。 我沒有. 在我的計算機名稱中,但確實有-在里面。 我的域名也包含. 在里面。 此外,我無法更改這些設置,因為它是我辦公室的筆記本電腦,我們的 TFS 設置綁定到我們的域名和計算機名。

任何人都可以幫助我了解發生了什么事嗎? 請指導我。 謝謝。

編輯

我在Global.asax中有以下代碼。 Application_BeginRequest方法在同一文件中為空。

protected override void Application_Start(object sender, EventArgs e)
{
    base.Application_Start(sender, e);
    String _path = String.Concat(System.AppDomain.CurrentDomain.RelativeSearchPath, ";",
                                         System.Environment.GetEnvironmentVariable("PATH"));
    System.Environment.SetEnvironmentVariable("PATH", _path, EnvironmentVariableTarget.Process);
    MyAppLog.Initialize();
    MyAppLog.WriteMessage("Application Started");
}

更新

根據評論中的建議,我可以從 Cassini 運行該網站。

發生這種情況的一個可能原因是 IIS 中的應用程序池被配置為在某個自定義帳戶下運行,而該帳戶不存在或提供了錯誤的密碼,或者密碼已更改。 查看IIS中應用程序池的高級屬性,它使用的是哪個帳戶。

此外,事件日志可能包含有關應用程序池為何在第一次請求時立即停止的更多信息。

在此處輸入圖片說明

好的,我有針對一個特定情況的另一種解決方案:如果您使用 WINDOWS 10,並且您最近更新了它(使用周年更新包),您需要按照以下步驟操作:

  1. 檢查您的Windows Event Viewer - 按 Win+R 並鍵入: eventvwr ,然后按 ENTER。
  2. Windows Event Viewer的左側,單擊Windows Logs -> Application
  3. 現在您需要在中間窗口中找到源IIS-W3SVC-WP一些錯誤。
  4. 可能你會看到這樣的消息:

模塊 DLL >>path-to-DLL<< 加載失敗。 數據是錯誤的。

  1. 您必須轉到Control Panel -> Program and Features ,根據無法加載的 dll,您需要修復另一個模塊:
    • 對於rewrite.dll - 找到IIS URL Rewrite Module 2並單擊Change -> Repair
    • 對於aspnetcore.dll - 找到Microsoft .NET Core 1.0.0 - VS 2015 Tooling ...並點擊Change -> Repair
  2. 重啟你的電腦。

我的情況是我的登錄密碼改變了,而應用程序池仍然使用舊的。 因此,只需單擊應用程序池的“高級設置”並重置您的“身份”。

我遇到了同樣的問題,並使用事件日志對其進行了調試。 首先它說:“無法找到來自 Microsoft-Windows-WAS 源的事件 ID 5059 的描述”。

然后我使用turn windows features on/off打開 WAS。 然后我在 eventvwr “找不到 Microsoft-Windows-DistributedCOM”中看到了這一點。

最后我放棄並刪除了應用程序池(用於停止訪問網站)並重新創建它,原樣。 這解決了問題。

大多數情況下,它是由於 AppPool 設置而發生的。

檢查以下內容以解決此問題

  1. 檢查 Apppool 服務是否正在運行。
  2. 檢查 AppPool 的身份。
  3. 如果該身份已更改,請輸入新密碼。

以下圖像顯示了 IIS 中的這些設置

在此處輸入圖片說明

對於使用 Windows 10 並在將它們更新為周年更新后來到這里的任何人,請查看此鏈接,它對我有幫助:

https://orcharddojo.net/blog/troubleshooting-iis-apppool-crashes-status-503-after-windows-10-anniversary-update

如果鏈接斷開:如果您的事件日志顯示 aspnetcore.dll、rewrite.dll(最常見,但也可能是其他)無法加載,您必須修復丟失的項目。

以下是我們迄今為止遇到的兩個具體問題以及如何解決它們,但您可能會遇到完全不同的問題:

"C:\WINDOWS\system32\inetsrv\rewrite.dll" (reference)
    Go to "Programs and Features" (Win+X, F) and repair "IIS URL Rewrite Module 2".
"C:\WINDOWS\system32\inetsrv\aspnetcore.dll" (reference)
    Go to "Programs and Features" (Win+X, F) and repair "Microsoft .NET Core 1.0.0 - VS 2015 Tooling ...".

如果您有 McAfee HIPS 並且在事件查看器應用程序日志中看到以下錯誤:

模塊 DLL C:\\Windows\\System32\\inetsrv\\HipIISEngineStub.dll 加載失敗。
數據是錯誤的。

然后以下解決了我的問題: https : //kc.mcafee.com/corporate/index?page=content&id=KB72677&actp=LIST

從頁面引用:

  1. 單擊開始,運行,鍵入資源管理器,然后單擊確定。
  2. 導航到:%windir%\\system32\\inetsrv\\config
  3. 以管理員身份打開文件 applicationHost.config 以在記事本中進行編輯。
  4. 編輯 <globalModules> 部分並刪除以下行:
    <add name="MfeEngine" image="%windir%\\System32\\inetsrv\\HipIISEngineStub.dll" />

  5. 編輯 <modules> 部分並刪除以下行:
    <添加名稱="MfeEngine" />

  6. 完成對 applicationHost.config 文件的編輯后,保存該文件,然后使用 iisreset 或通過重新啟動系統來重新啟動 IIS 服務器。

就我而言,我檢查了事件日志,發現錯誤是無法讀取配置文件 ' 試圖從文件 '\\\\?\\' 中讀取配置數據,行號 '0'。 數據字段包含錯誤代碼。

錯誤代碼是 2307。

我刪除了 C:\\inetpub\\temp\\appPools 中的所有文件並重新啟動了 iis。 它解決了這個問題。

我有一個類似的問題。 我通過將我的用戶添加到“本地安全策略”>“本地策略”>“用戶權限分配”下的“作為批處理作業登錄”策略來解決它。

當我第一次添加服務並為其創建應用程序池時。 我從命令提示符執行了“iisreset”,並且它起作用了。

如果您可以在 Visual Studio 調試器中運行該網站,則可能能夠看到應用程序池在您的代碼中崩潰的位置。 就我而言,它是一個被無限次遞歸調用的函數,這導致了堆棧溢出。 注意:Windows 事件日志和 IIS 日志對診斷問題沒有幫助。

我遇到了這個錯誤,在我的情況下,原因是前段時間我修改了用戶密碼,直到我重新啟動應用程序池才出現 503 錯誤。

所以我修復了它在應用程序池/高級設置/身份/[...]/設置.../密碼/確認密碼上設置新密碼

我在 iis 8.5 上遇到了同樣的問題。 在windows Logs-->applications下搜索eventViewer后,我發現我對位於“C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319”的.net框架的machine.config文件有權限錯誤\\Config\\machine.config”。 給它一個權限 IIS_IUSRS 解決了我的問題(右鍵單擊文件-->屬性-->安全-->編輯-->添加-->IIS_IUSRS)

如果您缺少的文件是cgi.dll ,即添加到這些Anniversary Update問題(感謝微軟),即您的Event Viewer

The Module DLL C:\WINDOWS\System32\inetsrv\cgi.dll failed to load.  The data is the error.

然后解決這個問題:

  1. 進入IIS Manager
  2. 在“ Connections面板中選擇最頂行(通常是您的 PC 名稱)
  3. 在右側面板的最底部,在Management下,您應該有Web Platform Installer
  4. 加載后,選擇Products
  5. cgi的搜索類型中,然后按<Enter>
  6. 選擇IIS: CGI然后點擊右邊的Add ,最后點擊底部的Install
  7. 安裝后它應該強制您重新啟動您的PC,您應該得到修復。

我遇到了類似的問題,每當向它們發出 Web 請求時,我的所有應用程序池都會停止。 雖然我在事件查看器中收到以下錯誤:

應用程序池“appPoolName”的工作進程在嘗試從文件“\\?\\C:\\inetpub\\temp\\apppools\\appPoolName\\appPoolName.config”中讀取配置數據時遇到錯誤“配置文件格式不正確的 XML”,行數字“3”。 數據字段包含錯誤代碼。

這告訴我在 application.config 中有錯誤:

C:\\Windows\\System32\\inetsrv\\config\\applicationHost.config

在我的場景中,我在部署時編輯了 web.config,其中包含一個 IIS 明顯不喜歡的元素,applicationHost.config 抓取了 web.config 並插入了這個壞元素,並且在我手動刪除它之前無法解析

除了此鏈接中 Orhan 的回答中概述的步驟之外,您可能還需要通過轉到 IIS 管理器 > 服務器根目錄 > 模塊 > 配置本機模塊來額外刪除本機模塊。 選擇 MfeEngine,然后選擇刪除。

將“托管管道模式”從“經典”更改為“集成”對我有用。 可以在應用程序池 -> 基本設置中更改

要解決此問題,請按照我遇到相同問題時的步驟操作,以下解決方案對我有用

1- 將文件夾“C:\\inetpub\\temp”的完全權限或至少讀取訪問權限授予 IIS_IUSRS

2- 還要檢查授予文件夾“C:\\inetpub\\wwwroot”的用戶 IIS_IUSRS 的相同權限。

希望這個解決方案有效!

在設置全新的 Classic ASP 網站時,我們在 Windows Server 2019 上遇到了此類 503 錯誤。

實際上,在 App Pool 中,將“ .NET CLR Version ”設置為“ No Managed code ”會導致 App Pool 在啟動后 2 秒停止,從而在 Windows 事件日志中產生 WAS 5002 和 5021 錯誤。

解決方案是放置“ v4.0 ”,即使沒有使用 .NET。

發生這種情況的一個可能原因是您的服務器計算機中沒有足夠的磁盤空間。 您可以在事件查看器中找到更多信息。 如果發生這種情況,只需停止 IIS,清理一些可用磁盤空間並重新啟動 IIS,然后啟動 App Poll。 在此處輸入圖片說明

我參加聚會遲到了,但沒有列出對我有用的解決方案。

我的解決方案是簡單地刪除 IIS 中的 web 站點和應用程序池,然后重新創建它們

這是因為最初我先創建了站點/文件夾,然后安裝了 dotnet 核心運行時。 由於某種原因,這無法讓網站啟動。

重新創建后,該網站無需任何其他建議即可開始使用。

這個答案對你有幫助嗎?
如果您在 EventViewer 中收到以下消息

模塊 DLL aspnetcorev2.dll 加載失敗。 數據是錯誤的。

那么是的,這將解決您的問題


檢查您的事件查看器

  1. 按 Win+R 並鍵入: eventvwr ,然后按 ENTER。
  2. Windows Event Viewer的左側,單擊Windows Logs -> Application
  3. 現在您需要在中間窗口中找到源IIS-W3SVC-WP一些錯誤。

如果您收到上一條消息錯誤,則解決方案是:

安裝 Microsoft Visual C++ 2015 Redistributable 86x 和 64X(兩者)

來源

在我的情況下,Windows 事件查看器 -> Windows 日志 -> 應用程序中顯示的錯誤消息是“模塊 DLL C:\\Windows\\system32\\inetsrv\\rewrite.dll 無法加載。數據是錯誤。” 通過安裝程序卸載重寫模塊解決了這個問題。 我沒有使用任何重寫規則,所以我卸載了重寫模塊。 重新安裝模塊也可能有助於解決問題。

我剛剛在一些運行 Windows 2008 R2 的舊服務器上遇到了這個問題。 32 位應用程序會使應用程序池崩潰並返回 503,而不會命中應用程序代碼。 該問題似乎與 .net 核心模塊錯誤地嘗試加載模塊的 64 位版本有關,即使有問題的 32 位應用程序不是.net 核心應用程序。

在確定要加載哪個模塊來為請求提供服務並嘗試將 64 位版本加載到 32 位進程中時,IIS 似乎仍然加載該模塊不是 bueno。

最后,我不得不從服務器上卸載所有版本的 .net core 並重新安裝最新版本(此時 3.1.15 - 我們還沒有使用 5)。 之后,我的 32 位應用程序和 .net 核心應用程序可以在同一台服務器上共存。

這篇博文幫助我解決了幾天后的問題。 希望它可以幫助某人。 包含解決方案的博客文章

授予文件夾“C:\\inetpub”的完全權限 為我工作!

就我而言,web 站點顯示“503 服務不可用”,應用程序事件日志顯示“...\aspnetcorev2.dll 加載失敗。數據是錯誤。” 這只發生在 IIS 設置“啟用 32 位應用程序”為True的 IIS 站點上。 系統正在停止這些站點的應用程序池,這就是在嘗試檢索站點時生成“503 服務不可用”消息的原因。

事實證明,此應用程序事件日志中指定的路徑甚至不存在。 嘗試修復系統上安裝的兩個“Microsoft.NET Core SDK 2.1.50x”版本並沒有解決問題,也沒有安裝微軟似乎可用的最新且唯一的 aspnetcorev2.dll,也沒有卸載這些 SDK。

注意:Microsoft 似乎甚至不再提供已安裝在我的系統上的原始 v2 ASP.NET Core 版本的安裝程序。

什么有效:由於我在此系統上沒有任何 ASP.NET 核心站點,因此對我有用的解決方案是從我的系統中卸載所有相關的 DLL,並通過將它們從 IIS applicationhost.config 文件中將它們注釋掉(參見aspnetcore.dll 未能加載applicationhost.config 文件路徑在 IIS 7、7.5、8、8.5 和 IIS 10? 如果您確實使用更高版本的 ASP.NET 內核,我認為您也可以更新 applicationhost.config 中的引用 [我沒有嘗試過]。

檢查寫入 [事件查看器\Windows 日志\系統] 節點的日志。 來源是“WAS”。

在此處輸入圖像描述

暫無
暫無

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

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