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失败的解决方法

带有 Javascript 的 Dot Net Core Web API - CORS 策略错误

我在 asp dot net core 中创建控制器但出现错误