[英]IIS fails to run ASP.NET Core site - HTTP Error 502.5
我們有一台 Windows 2012 R2 機器。 我有一個現有的 ASP.NET Core 站點,該站點正在運行一個已發布的 ASP.NET Core 站點。
但是,當我在進行更改一個月后的今天再次發布到該網站時,我無法再訪問該網站並在我的瀏覽器中出現以下錯誤
HTTP 錯誤 502.5 - 進程失敗
如需更多信息,請訪問: http://go.microsoft.com/fwlink/?LinkID=808681
如果我登錄到服務器並單擊部署目錄中的 exe,它會打開一個命令提示符並在端口 5000 上顯示我的站點。如果我訪問http://localhost:5000上的站點,它會完美運行,所以問題是使用 IIS 而不是網站本身。
如果我登錄到服務器,我可以在 Windows EventViewer 中看到以下內容
具有物理根目錄“D:\Sites\MySite\”的應用程序“MACHINE/WEBROOT/APPHOST/DEFAULT WEB SITE/MySite”無法使用命令行“%LAUNCHER_PATH%”%LAUNCHER_ARGS%'啟動進程,錯誤代碼 =“0x80070002:0”。
當我訪問瀏覽器錯誤消息中的鏈接時,它提到重新安裝我所做的 .net Core Hosting 捆綁包。 但是瀏覽器中的錯誤消息是相同的。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore requestTimeout="02:00:00" processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>
當我查看我的應用程序日志文件夾時,每次它嘗試訪問該站點時都會創建一個 stdout 文件,但每次它的大小為 0KB 且內容為空。
為什么 IIS 突然拒絕在它以前工作的地方工作,但如果我直接訪問編譯的 exe,應用程序可以工作?
您的問題是錯誤的 web.config 文件:
<aspNetCore requestTimeout="02:00:00"
processPath="%LAUNCHER_PATH%"
arguments="%LAUNCHER_ARGS%"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false" />
路徑 %LAUNCHER_PATH% 在您的系統上不存在,它甚至無效。 它應該是這樣的:
<aspNetCore requestTimeout="02:00:00"
processPath=".\yourAppName.exe"
arguments="somePossibleArgument"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false" />
請注意,如果從命令行啟動應用程序,則 web.config 文件將被完全忽略,這就是您未收到錯誤消息的原因。
我遇到了同樣的問題,我的問題是 IIS 無法獲得 dotnet 的路徑。 我能夠通過指定 dotnet.exe 的路徑來修復它
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="C:\Program Files\dotnet\dotnet.exe" arguments=".\your-project.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"/>
</system.webServer>
</configuration>
我的問題是由於我的appsettings.json
文件中的轉義序列無效,該進程無法啟動。
我正在使用 dotnet 運行已發布的 ASPNET Core 2 web api dll。 通過打開命令提示符並導航到站點文件所在的目錄,可以發現該問題。 到達那里后,我運行了命令:
dotnet mySite.dll
(將 mySite.dll 更改為應用程序的主 dll。另外,請確保已安裝正確版本的 .NET Core Windows Server 托管包)。
按回車鍵,它立即崩潰,在控制台窗口中給出錯誤的確切反饋。 如果您遇到類似問題,這是幫助確定啟動錯誤的好方法。
問題:當我部署 asp net core web API 時,processPath 設置為 dotnet。 該應用程序未啟動,事件查看器顯示上述錯誤。
解決方案:
應設置應用程序池標識以加載配置文件。
導航到:應用程序池 -> NetCore(您的池)-> 高級設置 -> 加載用戶配置文件 ----> 將此設置為 true
我驗證轉向 false 重新創建錯誤並設置回 true 解決了它。
我有一個類似的問題。 我只是按照故障排除步驟: Check the system event log for error messages
並從事件查看器中找到以下內容, Application 'MACHINE/WEBROOT/APPHOST/[MyFolder]' with physical root 'C:\\inetpub\\wwwroot\\[MyFolder]\\' failed to start process with commandline 'dotnet .\\MyApp.dll', ErrorCode = '0x80004005 : 80008083.
然后我從終端重新運行dotnet .\\MyApp.dll
並得到答案:
It was not possible to find any compatible framework version
The specified framework 'Microsoft.AspNetCore.App', version '2.1.1' was not found.
- Check application dependencies and target a framework version installed at:
\
- Alternatively, install the framework version '2.1.1'.
所以原因和jv_回答的一樣,你只是沒有安裝兼容的框架版本。 我最終使用了“自包含”部署模式,它奏效了。
這完全讓我發瘋,因為我已經嘗試了網上找到的所有可能的修復方法,但沒有任何效果對我有用。 直到我發現問題是我的項目名稱中有一個空格:App WebAPI.dll。 因此,當“dotnet .\\App WebAPI.dll”嘗試執行它時會失敗,因為它實際上是在嘗試執行“dotnet .\\App”而忘記了空格后的第二部分。 重命名我的解決方案和項目名稱以刪除空格 (AppWebAPI) 解決了我的問題。 我希望此修復程序可以節省人們試圖找出問題的時間。
我在部署應用程序時遇到了同樣的問題。 我這邊有幾個問題:)
我非常仔細地瀏覽了這個頁面: ASP.NET Core: Publishing to IIS
首先,我沒有安裝.NET Core Windows Server Hosting 包的所有部分。 我最終做了一個依賴於 fremework 的部署,而不是一個獨立的部署。 我們有很多應用程序,不想/不需要每個應用程序都在自己的 .net 核心版本上。 盒子上的 .net 版本太多了。
另外,請注意,如果您的管理員對服務器執行了任何更新/升級,他們可能會提升您的 ASP.NET Core 安裝(請參閱ASP.NET Core:發布到 IIS故障排除部分)
然后,我必須修復我的 web.config...這是我發布的工作 web.config:我沒有發布為 *.exe,我發布的是 *.dll(注意我的參數值)。 此外,我的 processPath 設置為“dotnet”。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\DT.Web.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>
此外,請確保您的 project.json 選項都設置為與您的服務器環境兼容(請參閱ASP.NET Core:發布到 IIS疑難解答部分)
如果有任何幫助,這是我的 project.json 的副本:
{
"version": "2.0.1.0",
"dependencies": {
"DT.Common": "2.*",
"DT.Configuration": "2.*",
"DT.Services": "2.*",
"DT.Web.ViewModels": "2.*",
"Microsoft.ApplicationInsights.AspNetCore": "1.0.2",
"Microsoft.AspNetCore.Authentication": "1.1.0",
"Microsoft.AspNetCore.Authentication.Cookies": "1.1.0",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "1.1.0",
"Microsoft.AspNetCore.Diagnostics": "1.1.0",
"Microsoft.AspNetCore.Mvc": "1.1.0",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.1.0-preview4-final",
"type": "build"
},
"Microsoft.AspNetCore.Routing": "1.1.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": {
"version": "1.1.0-preview4-final",
"type": "build"
},
"Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
"Microsoft.AspNetCore.Server.Kestrel.Https": "1.1.0",
"Microsoft.AspNetCore.Session": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.1.0",
"Microsoft.Extensions.Caching.SqlServer": "1.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "1.1.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
"Microsoft.Extensions.Configuration.Json": "1.1.0",
"Microsoft.Extensions.Logging.Console": "1.1.0",
"Microsoft.Extensions.Logging.Debug": "1.1.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Microsoft.Graph": "1.1.1",
"Microsoft.IdentityModel.Clients.ActiveDirectory": "3.13.6"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.1.0-preview4-final",
"imports": "portable-net45+win8+dotnet5.6"
},
"Microsoft.Extensions.Caching.SqlConfig.Tools": "1.1.0-preview4-final"
},
"frameworks": {
"netcoreapp1.1": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
],
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.1.0",
"type": "platform"
}
}
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"publishOptions": {
"include": [
"wwwroot",
"views/**/*.cshtml",
"appsettings.json",
"appsettings.*.json",
"web.config"
]
},
"scripts": {
"prepublish": [ "bower install", "gulp buildprod" ],
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
我在 Visual Studio 轉換 web.config 文件和更改 processPath 和參數時遇到了同樣的問題。 如Microsoft 站點所述,您可以在 project.csproj 文件中添加排除項:
<PropertyGroup>
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>
這解決了我在發布時更改路徑值的問題,但我仍然遇到問題,但是 Visual Studio 在調試時自行更改它。
我的項目在開發中運行良好,但在 web 部署/發布到生產后,它拋出502.5 Process Failure
。
原因原來是我已經從使用Microsoft.AspNetCore.All 2.0.5
更新到2.0.6
。 恢復版本后工作正常。
對我來說,解決方案只是安裝.Net Core 2.2 SDK
並且它起作用了。
我有同樣的問題,除了我在我的開發環境中更新了我的 Visual Studio 並且服務器需要更新 .NetCore 運行時。 一旦我更新了服務器上的運行時,我就可以再次使用。
我想我對 VS 2017 更新缺乏經驗是我的問題;-)
我希望能夠從我的開發目錄中從 IIS 運行我的基於 .Net Core 的 API,而無需與 web.config 文件發生沖突。 Visual Studio 正在根據項目配置文件設置控制 web.config。 你只需要在你的調試開始中添加一個 IIS 配置文件,這樣 VS 就知道如何處理你的 web.config。 說明在這里。
現在我可以編寫一點代碼,編譯和刷新瀏覽器,而無需等待瀏覽器啟動,也不會每次都丟失查詢字符串。 單擊 Debug 會自動將 VS 附加到 IIS 以進行調試,這意味着不再需要手動將調試器附加到 w3wp,這是困擾我多年的事情。 完美的!
作為參考,VS 正在將我的 web.config 動態更改為:
<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
<environmentVariables />
但是,我不會將其硬編碼到 web.config 中,只是讓 VS 管理它。 :)
對我來說,過了一會兒,我明白這個問題與其中的一個財產有關
appsettings.json
文件。
我有一個名稱為版本的屬性。 格式是這樣的:
"Version": "1.0.6",
在服務器上,我們的支持團隊沒有考慮這種格式,它是這樣的:
"Version": 1.0.6,
和 IIS 面臨 502.5 錯誤。
我可以看到應用程序事件日志,它幫助了我。
當我工作的團隊遇到這個問題時,有人只是用 Visual Studio 構建項目並壓縮 bin 文件夾。
您需要運行 dotnet publish 命令,以便 msbuild 任務將正確構建您的 web.config 文件。 它應該替換 %LAUNCHER_PATH%" 和 "%LAUNCHER_ARGS% 變量。
我遇到了同樣的問題,這個線程中的任何內容都不適合我。 所以我查看了 Windows 事件查看器,發現用戶沒有足夠的權限來創建/修改數據庫,因為我正在使用 EF 核心數據庫遷移。 修復授權解決了這個問題。
因此,我建議檢查您的應用程序事件,希望您能在那里找到錯誤的根本原因。
有時是由於 Assembly name 或 Namespace name 中的 Space 。
盡量避免空間。
轉到項目>>[項目] 屬性>> {應用程序選項卡}更改程序集名稱和默認命名空間名稱,刪除空格!
回應一些用戶提到的應用程序名稱或路徑問題:
我在使用“WebApp-OpenIDConnect-DotNet”示例項目( https://github.com/AzureADQuickStarts/WebApp-OpenIdConnect-DotNet )時遇到了這個問題,它在 IIS Express 中運行良好,但在 IIS 中運行良好。
事實證明,從https://github.com/dotnet/aspnetcore/blob/master/src/Servers/IIS/AspNetCoreModuleV2/CommonLib/HostFxrResolver.cpp深入研究 .NET 源代碼,因為程序集名稱以“-DotNet.exe”(或者可能只是 DotNet.exe),它假設它應該作為一個獨立的應用程序運行。 因此,有關缺少參數的投訴。 在從 Windows 事件日志中搜索錯誤字符串將我帶到源文件之前,我為此糾結了很長時間。
更改程序集名稱使其不以“-DotNet.exe”結尾為我解決了這個問題。
我應該補充一點,我實際上得到的是 500.30 錯誤而不是 500.5。 但是這個線程讓我最接近解決問題,所以我在這里發布我的解決方案。
希望能幫助某人。
哦,伙計們,我的網站也運行良好,突然間它開始顯示此錯誤。 我的網站是在go daddy下托管的。 他們的技術團隊也無能為力找出確切的問題。 我嘗試了上面的所有評論,但沒有一個工作正常。 所以在花了很多時間解決之后,
我在我的 web.config 中保留了 processPath,因為它就像processPath="dotnet"一樣,就在顯示此錯誤之前,我對我的appsettings.json文件進行了一些更改以更新我的連接字符串。 我在本地機器上使用filezilla (使用查看/編輯選項)對其進行了編輯。 所以我猜它可能會損壞,這也導致了這個問題。
所以我所做的是,我再次在本地發布了我的項目,並在我的 appsettings.json 中本地更新了我的連接字符串,並將此最新更改部署到了 Godaddy。 在這次部署之后,我的網站又開始出現了。
在我的情況下,當我克隆了一些非常舊的 git 存儲庫時發生了這個HTTP Error 502.5
,其中包含面向 .NET Core 1.1 的 Web 項目......前一段時間我從我的 Windows 機器上卸載了 .NET Core 1.1 運行時。
所以我去下載了運行時並重新安裝了它。 從這個頁面獲得了最新的 1.1.13:
https://dotnet.microsoft.com/download/dotnet/thank-you/runtime-1.1.13-windows-x64-installer
現在一切都很好。 回去工作。 :-)
我收到了類似的響應,其中包含以下事件查看器系統日志條目:
具有物理根目錄“”的應用程序“/LM/W3SVC/8/ROOT”無法使用命令行“do.net.<assemblyname>.dll”啟動進程並重試多次。 無法綁定到端口“2118”。 從多次重試中捕獲的 stdout 和 stderr 日志的前 30KB 字符:[消息結束]
在將安裝的版本與同時部署的工作服務器進行比較后,我發現系統變量沒有正確更新。
我將以下路徑添加到“Path”環境變量:
它立即開始工作。
我通過在 web.confing 文件中添加 processPath="C:\Program Files\do.net\do.net.exe" 來解決這個問題。
或者
運行命令 do.net --version 如果您收到類似“do.net”的消息,則無法將其識別為內部或外部命令、可運行程序或批處理文件。
do.net.exe 位於
C:\Program Files\do.net> 如果您使用命令提示符並收到“do.net”未被識別為內部或外部命令、可運行程序或批處理文件的消息,請首先檢查上述路徑。如果您找到上面的路徑然后復制它並將其設置為您PC的環境變量。
腳步:
打開控制面板>系統和安全>系統
點擊高級系統設置
在高級部分,單擊環境變量
在系統變量中,select 路徑並編輯
分號后寫“C:\Program Files\do.net”
單擊確定按鈕直到結束。
現在檢查它是否正常工作。 只需打開命令提示符並鍵入
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.