代码之家  ›  专栏  ›  技术社区  ›  th1rdey3

未能加载模块“aspnetcorev2.dll”

  •  1
  • th1rdey3  · 技术社区  · 7 年前

    最近我尝试安装 ASP.NET核心/.NET核心:运行时和托管捆绑包版本2.2 在运行的机器上 Windows Server 2008 R2 SP1(Windows Server 2008 R2 SP1) . 但是,安装后,IIS停止工作并给出 503 Service unavailable 托管在其中的所有应用程序出错。在检查了应用程序池之后,我看到池只是关闭了。

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

    模块dll c:\Program Files(x86)\iis\asp.net Core 加载模块\v2\aspnetcorev2.dll失败。数据就是错误。

    我尝试将池设置为32/64位,但错误是相同的。有没有其他人面临这个问题或有解决办法?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Eriawan Kusumawardhono    7 年前

    aspnetcorev2.dll实际上是ASP.NET核心2.0模块,通常称为ancm。如果要在IIS上运行ASP.NET核心2.0/2.1/2.2,并在转到ASP.NET核心原始的Kestrel引擎之前使用IIS作为主代理,则此模块需要一些设置和配置,它也被称为进程外模型。

    这一点很重要,在Windows以外的其他平台上,所有请求都直接发送到Kestrel,由Kestrel直接提供服务。因此,在IIS上,需要执行特殊的配置设置才能在IIS上使用Kestrel。

    有关IIS上的ancm的详细信息,请参考以下官方Microsoft文档: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.2

    注: 尽管该页面适用于.NET核心2.2,但它仍然适用于.NET 2.0/2.1。

    根据您的错误,有可能ANCM DLL不在您的应用程序生成的DLL的范围内。确保ancm dll文件在生成的编译文件夹中,而不是在外部。另外,请确保您使用的是RTM或.NET Core 2.0/2.1/2.2运行时的正式发布版本,而不是每日生成,因为使用.NET Core 2.0/2.1/2.2的每日生成可能会带来一些奇怪的错误,因为它们的运行时DLL的完整分布可能不完全一致。

    有关在ASP.NET Core 2.x中对ancm进行故障诊断的详细信息,请参考以下官方MS文档: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/troubleshoot?view=aspnetcore-2.2

    更新第1号:

    基于下面的评论,我添加了以下附加信息: 您应该清除计算机上的所有nuget缓存,恢复并再次运行msbuild。如果使用.NET Core 2.1作为ASP.NET Core 2.1应用程序的平台,那么如果安装.NET Core 2.2而不将应用程序的引用更新为v2.2,则有可能引用仍然混淆。

    或者为了更好的练习,使用 global.json 文件来严格编译应用程序,使其始终使用特定版本的.NET Core 2.1 SDK,而不管您计算机上的.NET Core SDK的最新版本是什么。 这一点也很重要,因为 默认情况下 编译.NET核心应用程序将始终尝试使用计算机上可用的最新SDK,而以前的旧版本将被忽略。

    设置 Gualal.JSON 记录如下: https://docs.microsoft.com/en-us/dotnet/core/tools/global-json

        2
  •  0
  •   th1rdey3    7 年前

    阅读以下文件后-

    Troubleshoot ASP.NET Core on IIS

    Common errors reference for Azure App Service and IIS with ASP.NET Core

    我开始知道 ASP.NET核心/.NET核心:运行时和托管捆绑包 (最新版本)取决于 微软Visual C++ 2015可再分发 . 有问题的机器有早期版本的 VC++ + ReDIST 安装。在安装了上述版本的可再发行文件(32和64位)之后,一切又开始工作了。

    有趣的是 ASP.NET核心/.NET核心:运行时和托管捆绑包版本2.2 安装程序在安装过程中没有引发关于丢失的 VC++2015 Redist .