HTTP 错误 500.0 - Dot net core 3.1 中的 ASP.NET Core IIS 托管失败(进程中)
Posted
技术标签:
【中文标题】HTTP 错误 500.0 - Dot net core 3.1 中的 ASP.NET Core IIS 托管失败(进程中)【英文标题】:HTTP Error 500.0 - ASP.NET Core IIS hosting failure (in-process) in Dot net core 3.1 【发布时间】:2021-07-21 15:21:53 【问题描述】:**我已经检查了所有可能的方法来解决这个错误,比如
-
安装dot net core 3.1运行环境
将 AspNetCoreHostingModel 设置为 OutProcess
但是当我尝试在 IIs 上设置我的 Default Nopcommerce 4.3 项目以在其上运行时仍然出现此错误。
请帮忙,因为我已经花了太多时间来解决这个错误**
【问题讨论】:
检查 IIS 事件查看器是否有错误以获取更多信息。您在 IIS 中遇到异常。问题可能是您正在尝试访问 IIS 文件系统并且没有访问文件系统的凭据。您是否发布并安装了 setup.exe 文件夹?如果构建机器和远程机器上的 Net 版本相同,则 Net 应用程序只会在部署机器上运行。所以核心版本必须相同。您还可以将异常堆栈跟踪添加到响应正文中,以便确定问题的确切原因。 @jdweng 我不发布。它是默认的 nopcommerce 4.3,所以我将它作为 localhost 安装在 iis 上 “我的默认 Nopcommerce 4.3 项目”是什么意思?听起来你正在做两件事 1) 安装 Nopcommerce 4.3 2) 安装一个调用 Nopcommerce 4.3 的 c# 应用程序。 是的,我正在安装 Nopcommerce 4.3 项目,该项目构建在 IIS 上的 dot net core 3.1 中 我认为 Net 3.1.14 有问题(请参阅 dotnet.microsoft.com/download/dotnet/3.1?force_isolation=true)。您需要下载与您构建的 Core 3.1 兼容的运行时版本。在过去的几周里,我已经回答了几个与您类似的问题。如果您查看 3.1.13 的链接,它会显示“在 Windows 上,我们建议安装 Hosting Bundle,其中包括 .NET Runtime 和 IIS 支持。” 3.1.14 的说法不一样。您可能想尝试较早版本的 Core 3.1。我认为 3.1.14 中缺少一些东西。 【参考方案1】:ASP.NET Core 3.1 运行时 (v3.1.6) - Windows 托管包
您可以从here下载。
【讨论】:
仍然存在同样的问题 它解决了我的 .net core 3.1 问题【参考方案2】:我在 .net core 3.1 中也发生了同样的事情。 就我而言,缺少一些服务器角色和功能
检查应用程序事件日志我发现错误“0x8007023e”
查看系统事件日志发现WAS(Windows Process Activation Service)通信错误:
然后我安装了以下角色和功能:
我还重新安装了 ASP.NET Core 模块(是插入 IIS 管道的本机 IIS 模块,允许 ASP.NET Core 应用程序与 IIS 一起工作)
最后我不得不将应用程序池重新分配给站点,一切正常(我使用的是 InProcess 模型)
【讨论】:
【参考方案3】:我费了很大劲才找到这个问题的解决方案。经过4 5天的研究,我知道了确切的解决方案。请按照以下所有步骤操作,它肯定适用于使用 dotnetcore 3.1 或普通 dotnetcore 3.1 项目的 Nopcommerce 4.3 问题。
Step1 : 使用 cmd 检查 dotnet 版本和 sdk
第 2 步:添加 IISUSER 或者您也可以授予所有人访问主文件夹的权限
第三步:如果是nopcommerce 4.3项目则配置路径
并粘贴到 bin->debug->netcoreapp3.1
中的文件夹下方App_Data,Views,wwwroot,Plugins,Themes,logs,Areas/Views,web.config
注意:这是在bin->debug->netcoreapp3.1
下添加web.config后的主要解决方案<aspNetCore processPath="C:\Program Files\dotnet\dotnet.exe" arguments=".\Nop.Web.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" startupTimeLimit="3600" hostingModel="InProcess">
注意:如果您已经在 iis 中配置了您的网站,请执行最后一步 使用cmd重置iis。 以管理员身份打开 cmd 并运行命令 iisreset
我希望这能解决您的所有问题
【讨论】:
【参考方案4】:如果正确安装了 .net SDK,但没有抛出相同的错误。然后请检查您是否选择了专用的应用程序池,并且选择了 CLI 版本为无托管代码。
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。【参考方案5】:在我的例子中,它是 web.config 文件。我的网站作为应用程序托管在另一个网站(应用程序文件夹)中。添加带有 inheritInChildApplication="false" 的“位置”标签为我解决了这个问题。
<location path="." inheritInChildApplications="false">
<system.webServer>
<!-- other configs -->
</system.webServer>
</location>
【讨论】:
【参考方案6】:我今天刚遇到这个问题,在这个问题上使用Rick Strahl's Blog Post进行排查。
最终,事实证明,使用 Windows 事件日志 对查找实际错误最有帮助,对我来说,这是web.config
中的错误行。这是针对应用程序的.exe
而不是.dll
(发布为依赖于框架而不是独立的)。因此,IIS 甚至无法执行任何操作,甚至没有登录到 STDOUT 或给出更具描述性的错误。
一个简短的例子是我有这个:
<aspNetCore processPath=".\MyApp.exe" ... />
而不是这个:
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll" ... />
由于.exe
不存在,IIS 抛出错误。
【讨论】:
以上是关于HTTP 错误 500.0 - Dot net core 3.1 中的 ASP.NET Core IIS 托管失败(进程中)的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core 无法在 IIS 下运行:HTTP 错误 500.0 - ANCM 进程内处理程序加载失败
尝试在 Plesk Onyx 17.8.11 上托管 ASP.NET 2.2 网站时出错 - HTTP 错误 500.0 - ANCM 进程内处理程序加载失败
为 AppPool 使用自定义标识时,StaticFile 上出现 HTTP 错误 500.0
IIS7.5 HTTP 错误 500 调用loadlibraryex失败的解决方法