The Module "aspnetcorev2.dll" failed to load

16 浏览
0 Comments

The Module "aspnetcorev2.dll" failed to load

最近我尝试在一台运行Windows Server 2008 R2 SP1的机器上安装ASP.NET Core/.NET Core: Runtime & Hosting Bundle版本2.2。然而,在安装后,IIS停止工作,并对其中托管的所有应用程序显示"503 Service unavailable"错误。在检查应用程序池时,我发现应用程序池会突然关闭。

在事件查看器中,我可以看到以下错误信息 -

模块DLL C:\Program Files (x86)\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll加载失败。数据是错误的。

我尝试将应用程序池设置为32位和64位,但错误仍然相同。有其他人遇到过这个问题或者有解决方案吗?

0
0 Comments

aspnetcorev2.dll加载失败的原因是在机器上找不到"C:\Program Files\IIS\Asp.Net Core Module"文件夹。解决方法是将存在的"C:\Program Files\IIS Express\Asp.Net Core Module"文件夹复制到相应位置即可。这个方法对于解决该问题非常有效。

0
0 Comments

aspnetcorev2.dll加载失败的原因可能是ANCM模块没有正确的设置和配置,如果ASP.NET Core 2.0/2.1/2.2要在IIS上运行并使用IIS作为主要代理,然后再转到ASP.NET Core原始Kestrel引擎,这也被称为进程外模型。

在其他平台上,除了Windows之外,所有请求直接发送到Kestrel并由Kestrel直接提供。因此,在IIS上,需要进行一些特殊的配置设置才能在IIS上使用Kestrel。

关于IIS上的ANCM的更多信息,请参考官方的Microsoft Docs:

https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.2

注意:尽管该页面适用于.NET Core 2.2,但对于.NET 2.0/2.1仍然适用。

根据您的错误,有可能ANCM DLL无法在应用程序的生成DLL范围之内找到。确保ANCM dll文件位于生成的编译文件夹内,而不是外部。还要确保您使用的是.NET Core 2.0/2.1/2.2的RTM或官方发布版本,而不是每日构建版本,因为使用每日构建的.NET Core 2.0/2.1/2.2可能会导致一些奇怪的错误,因为它们的完整运行时DLL分发可能不完全一致。

有关在ASP.NET Core 2.x中对ANCM进行故障排除的更多信息,请参考官方的MS Docs:

https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/troubleshoot?view=aspnetcore-2.2

根据下面的评论,我补充了以下额外信息:

您应该清除计算机上的所有nuget缓存,然后恢复和运行MSBUILD。如果您将.NET Core 2.2安装为ASP.NET Core 2.1应用程序的平台,那么如果您不更新应用程序的引用到v2.2,可能会导致引用混乱。

或者为了更好的实践,使用global.json文件来限制您的应用程序的编译始终使用.NET Core 2.1 SDK与特定版本,无论您的计算机上最新的.NET Core SDK是什么版本。

这也很重要,因为默认情况下,编译.NET Core应用程序将始终尝试使用计算机上最新的SDK,而之前存在的较旧版本将被忽略。

设置global.json的方法在这里记录:

https://learn.microsoft.com/en-us/dotnet/core/tools/global-json

在这台机器上,我安装了2.1版本,它工作得非常好。但是安装2.2会出现错误。我认为问题在于IIS,因为错误发生在应用程序加载之前,所有的应用程序(包括较旧的MVC和WebForms)都受到影响。卸载2.2版本后,IIS重新开始工作。

然后,您应该清除计算机上的所有nuget缓存,然后恢复和运行MSBUILD。如果您将.NET Core 2.2安装为ASP.NET Core 2.1应用程序的平台,那么如果您不更新应用程序的引用到v2.2,可能会导致引用混乱。

我的应用程序目标是net471。但是正如我所说,安装2.2会导致IIS完全停止工作。即使是简单的静态文件主机也停止工作。

如果您的应用程序目标是net471,为什么要使用.NET Core 2.1?ASP.NET Core 2.1与.NET4.7.1不兼容。而且您的问题中没有提到使用.NET 4.7.1的任何信息,您的标签是net-core。您最后的评论与您自己的问题相矛盾。

我正在使用.NET Core托管包,这是在IIS中托管dotnetcoremvc应用程序所需的

dotnetcoremvc应用程序需要ASP.NET Core 2.1,并且ASP.NET Core 2.1需要.NET Core 2.1,而不是.NET Framework。您在哪里找到说dotnetcore mvc应用程序与.NET Framework兼容的文档?谁说的这个?您确定您有正确的应用程序目标吗?否则,我无法再帮助您了。

当您从Visual Studio中创建新的ASP.NET Core Web应用程序时,有一个选项可以将目标框架选择为.NET Framework。此外,使用dotnet-cli创建dotnet核心应用程序后,您可以通过编辑csproj文件简单地更改框架。

0
0 Comments

问题出现的原因是ASP.NET Core/.NET Core: Runtime & Hosting Bundle(最新版本)依赖于Microsoft Visual C++ 2015 Redistributable。解决方法是安装所需的vc++ 2015 redist(32位和64位)。安装Microsoft Visual C++ Redistributable 2017或进行简单的修复也可以解决该问题。有些用户遇到了x86版本和x64版本共存的问题,卸载x86版本并重启系统后问题得到解决。对于Windows 2012 R2,需要安装特定的vc++ redistributable。

0