aspnetcore.dll 加载失败

aspnetcore.dll failed to load

我通常在 windows 7 台式机上开发,使用 visual studio 2015 update 3。我的 windows 10 笔记本电脑上有相同的 vs2015.3。我将我正在使用的 asp mvc 5 应用程序复制到笔记本电脑上,但是当我尝试从 VS 启动它时它不会 运行。我收到 "aspnetcore.dll failed to load" 错误。我环顾四周,大多数解决方案都是修复 asp net core 安装,但我的笔记本电脑上没有安装 asp net core,因为我还没有使用 core。我的项目针对 .Net 4.6。

我的桌面上确实有 Core。那么我必须安装 .net 核心吗?或者还有其他解决方案吗?我正在使用默认的 IIS 10。

找到解决方案 - applicationhost.config 文件引用了 ASP.NET 核心并试图加载不存在的模块。我删除了 applicationhost.config 文件并重新打开解决方案,这迫使 VS 在没有 ASP.NET 核心引用的情况下重建它。现在工作正常。

在我使用 Visual Studio 2015 的情况下,此文件位于 .vs\config\applicationhost.config

对于使用 IIS Express 的 Visual Studio 的早期版本,请参阅此问题以获取有关 applicationhost.config 所在位置的更多信息:Where is the IIS Express configuration / metabase file found?

安装最近发布的 Windows 10 周年纪念更新(版本 1607)似乎会通过关闭应用程序池来破坏 IIS 的稳定性,从而在尝试 运行 应用程序时导致 503 错误,这是由于工作进程启动时某些DLL加载失败造成的。

查看 Windows 事件查看器(Win+X、V)以查看您需要修复的内容:打开 "Windows Logs",然后 "Application" 并查找 "Error" 级别条目与来源 "IIS-W3SVC-WP"(如果您的 IIS 实例的名称不是默认名称,则可能会有所不同)。在详细信息中,您会看到一条短消息,如下所示:

The Module DLL <path-to-DLL> failed to load.  The data is the error.

根据您的配置,可能有不同的 DLL 导致此类问题,并且它们会一个接一个地发生,因此您需要不断检查事件日志并修复问题,直到您的应用程序正常启动。可以肯定的是,在每次尝试之前,请停止 IIS 并关闭 IIS 管理器。

这是我们迄今为止遇到的两个具体问题以及如何解决它们,但您可能会遇到完全不同的问题:

1."C:\WINDOWS\system32\inetsrv\rewrite.dll" (reference) ◦Go to "Programs and Features" (Win+X, F) and repair "IIS URL Rewrite Module 2".

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 ...".

Original source

删除 applicationhost.config 对我不起作用。

我的服务在 32 位模式下被强制 运行,而我的 aspnetcore 是 64 位。

因为我目前没有使用 .NET 核心,所以我可以在 applicationhost.config 文件中注释掉所有对 aspnetcore 的引用,然后重新启动 iis。

使用 VS 2015 (Windows 10)。处理下载的示例 MVC 应用程序(来自 Intuit),目标为 .net 4.6.1

我得到的完全一样behaivior/error:

"The Module DLL C:\Program Files (x86)\IIS Express\aspnetcore.dll failed to load"

找到Applicationhost.config文件(下载包的一部分)并删除,没有解决问题,因为IISExpress重新生成了Applicationhost.config文件具有相同的引用。

为了解决这个问题,我不得不注释掉所有 (aspnetcore.dll) 参考资料:

  1. (配置部分) < 部分名称="aspNetCore" overrideModeDefault="Allow" />

  2. (全局模块) < 添加名称="AspNetCoreModule" 图像="%IIS_BIN%\aspnetcore.dll" />

  3. (模块) < 添加名称="AspNetCoreModule" lockItem="true" />

您可以搜索并相应地注释掉。

对于后来的人来说,对我有用的是:

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.1&tabs=aspnetcore1x

我必须为 aspnetcore 安装托管运行时(我的团队正在使用 core),这解决了我的本地 IIS 问题。