<p>aspnetcore.dll 加载失败 #597</p>

创建于 2016-06-20  ·  89评论  ·  资料来源: dotnet/aspnetcore

每次安装新版本时,系统都会停止正确加载 dll aspnetcore。

“事件查看器”中的错误消息:
模块 DLL C:\WINDOWS\system32\inetsrv\aspnetcore.dll 加载失败。 数据是错误的。
日志名称:应用程序
来源:IIS-W3SVC-WP
级别:错误

相关系统信息:
操作系统名称:Microsoft Windows 10 Enterprise Insider Preview
操作系统版本:10.0.14366 不适用 Build 14366
操作系统制造商:微软公司
操作系统配置:成员工作站
操作系统构建类型:多处理器免费
产品编号:00359-80000-00001-AA999
原始安装日期:2016 年 6 月 16 日,上午 6:37:31
系统启动时间:6/16/2016, 6:11:50 AM
系统制造商:惠普
系统型号:HP Z420 工作站
系统类型:基于 x64 的 PC
处理器:已安装 1 个处理器。
BIOS 版本:Hewlett-Packard J61 v03.06, 3/27/2013
Windows 目录:C:\WINDOWS
系统目录:C:\WINDOWS\system32
启动设备:\Device\HarddiskVolume1
系统区域设置:en-us;English(美国)
输入区域设置:en-us;English(美国)
时区:(UTC-08:00) 太平洋时间(美国和加拿大)
总物理内存:16,307 MB
可用物理内存:7,019 MB
虚拟内存:最大大小:19,251 MB
虚拟内存:可用:6,503 MB
虚拟内存:使用中:12,748 MB
页面文件位置:C:\pagefile.sys
修补程序:不适用
网卡:已安装 1 个 NIC。
Hyper-V 要求:VM 监视器模式扩展:是
在固件中启用虚拟化:否
二级地址转换:是
数据执行保护可用:是

最有用的评论

在 Microsoft .NET Core 1.0.0 上运行修复 - VS 2015 Tooling Preview 2,加上重新启动,在安装周年更新后也对我有用。

所有89条评论

代表@teovc 打开。

@teovc应该有更多详细信息,“数据是错误。” 在事件日志中。

在错误消息的详细信息视图中,有以下内容 [见附图]。
在 Bing 中稍微搜索一下,表明该错误与 32 位应用程序有关,但应用程序池启用了该选项。
capture
capture2

该错误表明 32 位 AppPool 正在尝试加载 64 位 aspnetcore.dll。 您能否分享文件信息“C:\Windows\System32\inetsrv\aspnetcore.dll”和“C:\Windows\SysWOW64\inetsrv\aspnetcore.dll”

你能不能更具体一点你想看到的信息? (又名,这就是你要找的吗?)
capture
capture2

该文件看起来是正确的。 我在 Win 10 机器上安装了与您相同版本的 MSI 并且工作正常。 您的机器配置有问题。 能否请您分享您的 applicationhost.config 和 web.config。
作为一种解决方法,您可以将“启用 32 位应用程序”设置为 false 以查看它是否有帮助。

dll 可以工作,当作为自托管体验的一部分安装新版本的操作系统出现问题。
现在,我正在使用默认网站 (C:\inetpub\wwwroot)。 附件是 web.config 文件(带有 txt 扩展名,因为 GitHub 抱怨)。
网络配置文件

该 web.config 不是您用于 ASP.NET Core 应用程序的那个,因为它不包含任何 ASP.NET Core 模块设置。 您能否尝试卸载 ASP.NET Core 包,然后在操作系统升级后重新安装,看看是否有帮助?

您能否在 C:\Windows\System32\inetsrv\config 下共享 applicationhost.config。 这个文件是IIS配置文件,指定了aspnetcore.dll的路径。

我要试试那个选项。 同时,这里是 applicationhost.config 文件。 请注意,到目前为止的解决方案(修复或删除/安装)需要一些时间,人们正在失去。 组织外部的个人可能不会受到该问题的太大影响,因为操作系统更新的频率低于组织内部的某个人。 谢谢。
应用主机.config.txt

同样的问题给我
因为应用程序必须运行 32 位和集成

只是想补充一点,我刚刚遇到了这个问题。
当您说卸载“ASP.NET Core 包”时,您指的是哪一部分?

我想以 32 位模式运行旧应用程序
我也想学习 ASP.NET Core 应用程序
卸载“ASP.NET Core bundle”的坏方法,还有其他方法吗?

大家好,
我从控制面板/添加或删除程序中删除了与 ASP.NET Core 相关的两个包,然后让 VS 安装下一版本的 ASP.NET Core (Microsoft.NET Core 1.0.0 - SDK Preview 2 (x64)) , 和 Microsoft.NET Core 1.0.0 - VS 2015 Tooling Preview 2) 并且在安装新版本的操作系统时问题仍然存在。

在 VS2015 - Update 2 下,解决方案/项目工作正常,但是当我升级到 VS2015 - Update 3 以及扩展更新时,我遇到了这个问题。 所以,有些东西打破了解决方案/项目。 所有项目都在 .NET v4.6 框架下,这里没有 .NET 核心项目/解决方案。 几天后,当我从 TFS 克隆源代码时,它可以正常工作,没有任何错误迹象。 奇怪的。 那也没有道理。

只是想补充一下,每次 Windows 10 的新 Insider 版本出现时,我都会遇到这个问题。 我最终不得不每次都卸载/重新安装 .Net Core。 如果这在 8 月 2 日周年更新发布之前没有解决,那么那里将会有很多困惑的开发者。

从 Win 8.1 升级到 Win 10 的相同问题。
卸载并重新安装 DotNetCore.1.0.0-VS2015Tools.Preview2.exe 已修复。

只需运行“修复”即可使其再次工作。 我不必完全卸载/安装。 但我刚刚更新到周年纪念更新,我有点沮丧,因为我立即遇到了这个问题。

更新到周年纪念更新后,这里也是一样...

在 Microsoft .NET Core 1.0.0 上运行修复 - VS 2015 Tooling Preview 2,加上重新启动,在安装周年更新后也对我有用。

在 Microsoft .NET Core 1.0.0 上运行修复 - VS 2015 Tooling Preview 2,加上重新启动,在安装周年更新后也对我有用。

确认这在 Build 14393 上对我有用。

https://www.microsoft.com/net/core#windows安装工具预览 2
不必重新启动,只需启动我的应用程序池,我的网站就会再次运行。

在 Microsoft .NET Core 1.0.0 上运行修复 - VS 2015 Tooling Preview 2,加上重新启动,在安装周年更新后也对我有用。

谢谢,运行修复并重新启动应用程序池为我解决了这个问题。 这个问题是在“周年更新”之后开始的。

同样的问题 - 在 Windows 10 周年更新后被破坏 - 即新的操作系统更新打破了它。

在我的盒子上, aspnetcore.dll模块安装为全局模块,因此当 IIS 无法加载 DLL 时,它会阻止 _all_ 应用程序池启动(包括应用程序池重试、达到重试限制、然后禁用应用程序池.. . 一次一个......每当每个应用程序池尝试在第一个请求时启动)。

这与我能想到的“每个应用程序隔离 xcopy 部署”的好处相去甚远:操作系统更新破坏了开发人员计算机上的所有网络应用程序。

我遇到了无法修复或卸载 Core Tooling Preview 2 的额外问题(“帐户已存在”错误)。 在 VS 2015 上进行修复似乎已经修复了 aspnetcore.dll 无法加载的问题。

确认这在 Build 14393 上对我有用。

https://www.microsoft.com/net/core#windows安装工具预览 2
不必重新启动,只需启动我的应用程序池,我的网站就会再次运行。

这对我有用。
我需要安装和修复,这两个项目因为还没有安装.net core,只有IIS ...
只有安装对我不起作用。

同样的问题和解决方案在这里。 刚刚修复了 .NET Core 1.0.0 RC2,Tooling Preview 1。

在我的机器上修复了 .NET Core 1.0.1 VS 2015 Tooling Preview 2 解决了这个问题。

刚刚在本周的 Windows 10 ver 1607 更新中也得到了这个。 不得不修复“.NET Core 1.0.0 RC2, Tooling Preview 1”
通过stackoverflow找到这个页面http://stackoverflow.com/questions/37475214/net-mvc-4-project-fails-with-event-log-error-the-module-dll-c-windows-system3

我今天遇到了同样的问题,和这里的所有人一样,在我的机器上修复了 .NET Core 1.0.1 VS 2015 Tooling Preview 2 解决了这个问题。 但奇怪的是,我今天刚刚安装了这个工具,就在我安装了一些 Visual Studio 更新 3 的补丁之后。

我有同样的问题,我最终卸载了机器中的所有 .net 核心内容来完成我的遗留工作:(

卸载 .NET Core 1.0.0 RC2 SDK Preview1 (x64)。 然后修复 NET Core 1.0.0 RC2,工具预览 1。
为我工作

更新到 Windows 10 Anniversary 后遇到同样的问题。 修复 .NET Core 1.0.1 VS 2015 Tooling Preview 2 解决了这个问题。 我还必须重新安装已安装的 URL 重写模块,这会导致类似的错误。

@freeboarder您好,我正在尝试查找此问题的重现步骤。 您从哪个操作系统将您的机器更新到 Windows 10 Anniversary、Windows 10 或 Window 8.1? 并请解释您为更新到 Windows 10 所做的具体操作,以便我可以用同样的方法重现该问题。

@freeboarder ,今天,我试图重现该问题,但未能重现该问题。 这是我所做的。 请让我知道是否有任何遗漏来重现您遇到的问题。

  1. 准备一台amd64机器,安装Win10 RTM build 14393.0.160715
  2. 安装 IIS
  3. 安装 VS 2015 + VS Update3
  4. 转到https://www.micorosft.com/net/core#windows ,然后安装“.NET Core 1.0.1 - VS 2015 Tooling Preview 2”
  5. 重启机器刷新IIS服务应用Dotnet工具配置
  6. 创建一个示例 aspnetcore 应用程序并部署到 IIS 并验证一切正常
  7. 转到设置 > 更新和安全 > Windows 更新并安装“适用于基于 x64 的系统的 Windows 10 版本 1607 更新 (KB3176936)
  8. 更新后,我确认一切仍然有效

@jhkimnew这发生在上周 Windows 升级到 v1607 时。 安装有 iis 的旧版 windows。 然后安装 url 重写插件和 .net 工具预览。 他们让 windows 升级到 v1607。 它重新配置 iis 并给出我们提到的错误。 修复安装解决了错误,但升级应该能解决问题。 反正我就是这样遇到的。

@FlapperMK “重新配置iis”是什么意思?
你的意思是 aspnetcore.dll 模块不见了? 或者,aspnetcore.dll 文件不见了? 或两者?
在正常/成功升级操作系统中,IIS 不应重置其配置和任何文件。 我已经在我的测试机器上确认过了。
如果您知道重现步骤,请与我分享,以便我们调查问题。

该工具是通过 Visual Studio 安装的。 由于上述错误,升级后 iis 无法初始化。 Iis 仍然有工具的指针,但在某处找不到产生错误的东西。 修复安装修复了该问题并且成功初始化了 iis。 在修复之前,什么都无法浏览。

@FlapperMK为了让我理解这个问题,请告诉我 IIS 初始化失败时 %SystemRoot%\system32\inetsrvaspnetcore.dll 文件是否存在。 我问的原因是升级操作系统不应删除 inetsrv 目录中的任何现有文件。 如果文件存在但您仍然遇到失败。 您应该仔细检查 %SystemRoot%\system32\inetsrv\config\applicationhost.config 文件中用于 aspnetcore.dll 文件的路径。 如果它指向不同的路径,则需要检查配置的路径是否有效。 基本上我想了解真正发生了什么。
如果文件存在并且配置的路径有效,我们不能说 IIS 配置是通过升级操作系统重置的,可能还有其他事情正在发生。

对我来说,我是在10586上。安装了IIS。 安装了 Vs2015 版本,随着时间的推移升级到最新补丁。 仅安装了 .net 核心版本。

然后 Windows 将自身更新为 14393。然后我遇到了 IIS 和 .net 核心的问题,不得不重新安装它来修复。 全部在 64 位。

@realwarder ,你能再次重现这个问题吗? 如果是这样,同样的问题也给你。 为了让我理解这个问题,请告诉我IIS初始化失败时%SystemRoot%\system32\inetsrvaspnetcore.dll文件是否存在。 我问的原因是升级操作系统不应删除 inetsrv 目录中的任何现有文件。 如果文件存在但您仍然遇到失败。 您应该仔细检查 %SystemRoot%\system32\inetsrv\config\applicationhost.config 文件中用于 aspnetcore.dll 文件的路径。 如果它指向不同的路径,则需要检查配置的路径是否有效。 基本上我想了解真正发生了什么。 如果文件存在并且配置的路径有效,我们不能说 IIS 配置是通过升级操作系统重置的,可能还有其他事情正在发生。

@realwarder @FlapperMK
这是供您参考。 安装 Aspnet Core 时会安装 aspnetcore.dll。 Aspnet Core 是 .Net Core VS 工具中包含的包之一。
如果您的机器安装了 IIS,Aspnet Core 安装程序会将 aspnetcore.dll 安装到 IISExpress 和 IIS 目录。 如果您的机器没有安装 IIS,Aspnet Core 安装程序只会将 aspnetcore.dll 安装到 IISExpress 目录。

在我的测试机中,安装操作系统更新后没有删除aspnetcore.dll文件。 除非您无意中调用 Aspnet Core 安装程序来卸载 aspnetcore.dll,否则我看不出删除该文件的任何原因。

如果有人可以告诉我重现步骤,请告诉我,我会检查导致问题的原因。 到目前为止,我没有看到任何一致的重现步骤并试图了解真正发生的事情。
首先,我想检查文件是否被删除,以确保错误消息不是误报。

我们还应该检查缺少的架构文件和 applicationhost.config 条目。 @jhkimnew你能描述在哪里寻找那些吗?

这是架构文件信息。

对于 IISExpress:
“%ProgramFiles%\IIS Express\config\schema\aspnetcore_schema.xml”

对于 IIS:
"%windir%\system32\inetsrv\config\schema\aspnetcore_schema.xml"

这是aspnetcore 文件信息。

对于 IISExpress (x86/amd64):
"%ProgramFiles%\IIS Expressaspnetcore.dll"
"%ProgramFiles(x86)%\IIS Expressaspnetcore.dll"

对于 IIS (x86/amd64):
"%windir%\system32\inetsrvaspnetcore.dll"
"%windir%\syswow64\inetsrvaspnetcore.dll"

这是 aspnetcore.dll 模块的配置文件信息。

对于 IIS:
aspnetcore.dll 模块在 %windir%\system32\inetsrv\config\applicationhost.config 文件中配置。 您可以从文件中搜索“aspnetcore.dll”文件。

对于 IISExpress:
aspnetcore.dll 模块配置在.vs\config\applicationhost.config。 默认情况下,applicationhost.config 将不存在。 当您启动 VS 解决方案的任何现有 Web 应用程序项目时,将创建该文件。 您可以从文件中搜索“aspnetcore.dll”文件。

@jhkimnew我不确定修复之前缺少什么,因为我现在已经修复了安装。 目前,%SystemRoot%\system32\inetsrvaspnetcore.dll 存在于受影响的 PC 上。 这两个架构文件现在也存在。

当时的事件日志只是显示了这一点。

Log Name:      Application
Source:        Microsoft-Windows-IIS-W3SVC-WP
Date:          22/09/2016 12:05:19
Event ID:      2280
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      ********
Description:
The Module DLL C:\WINDOWS\system32\inetsrv\aspnetcore.dll failed to load.  The data is the error.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-IIS-W3SVC-WP" Guid="{670080D9-742A-4187-8D16-41143D1290BD}" EventSourceName="W3SVC-WP" />
    <EventID Qualifiers="49152">2280</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2016-09-22T11:05:19.472744500Z" />
    <EventRecordID>1489</EventRecordID>
    <Correlation />
    <Execution ProcessID="0" ThreadID="0" />
    <Channel>Application</Channel>
    <Computer>********</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="ModuleDll">C:\WINDOWS\system32\inetsrv\aspnetcore.dll</Data>
    <Binary>7E000000</Binary>
  </EventData>
</Event>

@FlapperMK
您可以通过搜索“aspnetcoremodule”来检查安装日志文件吗?
您可以通过运行以下命令来做到这一点。

cd %temp%
findstr /spi aspnetcoremodule *

在正常情况下,应该有安装 AspNetCoreModule_x64 包的日志条目。
命令结果将显示文件名(例如:dd_DotNetCoreTools__20160926140846.log)作为我从我的测试机器获得的以下屏幕截图,您可以使用任何文本编辑器程序打开日志文件。 通过读取带有关键字 aspnetcoremodule 的安装日志文件内容,您可以检查在更新操作系统之前/之后 AspNetCoreModule 包安装程序发生了什么。

<><><>findstr 命令结果示例:
...
dd_DotNetCoreTools__20160926140846.log:[14D4:14D8][2016-09-26T14:08:47]i101:检测到包:AspNetCoreModule_x64,状态:不存在,缓存:无
...
<><><>

我遇到了同样的问题,解决方案确实是修复 _Microsoft .NET Core 1.0.1 - VS 2015 Tooling Preview 2_ 的安装。

这是我修复前findstr /spi aspnetcoremodule *输出:

dd_DotNetCoreTools__20160920111929.log:[2AB0:18E4][2016-09-20T11:19:29]i101:检测到包:AspNetCoreModule_x86,状态:不存在,缓存:无
dd_DotNetCoreTools__20160920111929.log:[2AB0:18E4][2016-09-20T11:19:29]i101:检测到包:AspNetCoreModule_x64,状态:存在,缓存:完成
dd_DotNetCoreTools__20160920111929.log:[2AB0:18E4][2016-09-20T11:19:31]i201:计划包:AspNetCoreModule_x86,状态:缺席,默认请求:缺席,ba请求:无,无回滚:无:不,未缓存:不,依赖:无
dd_DotNetCoreTools__20160920111929.log:[2AB0:18E4][2016-09-20T11:19:31]i201:计划包:AspNetCoreModule_x64,状态:存在,默认请求:存在,ba请求:存在,执行,无: : 不, 取消缓存: 不, 依赖: 注册
dd_DotNetCoreTools__20160920111929.log:[2530:1988] [2016-09-20T11:19:33] I325:注册依赖性:{b837b432-47cc-42bf-88e4-876d726dfb7c}上包裹供应商:IIS_AspNetCore_Module,64,包:AspNetCoreModule_x64
dd_DotNetCoreTools__20160920112251.log:[0BB0:0548][2016-09-20T11:22:51]i101:检测到包:AspNetCoreModule_x86,状态:不存在,缓存:无
dd_DotNetCoreTools__20160920112251.log:[0BB0:0548][2016-09-20T11:22:51]i101:检测到包:AspNetCoreModule_x64,状态:存在,缓存:完成
dd_DotNetCoreTools__20160920112251.log:[0BB0:0548][2016-09-20T11:22:51]w327:不会卸载包:AspNetCoreModule_x64,发现依赖:1
dd_DotNetCoreTools__20160920112251.log:[0BB0:0548][2016-09-20T11:22:51]i201:计划包:AspNetCoreModule_x64,状态:存在,默认请求:缺席,ba:无,无回滚: 不, 取消缓存: 不, 依赖: 取消注册
dd_DotNetCoreTools__20160920112251.log:[0BB0:0548][2016-09-20T11:22:51]i201:计划包:AspNetCoreModule_x86,状态:缺席,默认请求:缺席,ba请求:无,无回滚:无: 不, 取消缓存: 不, 依赖: 取消注册
dd_DotNetCoreTools__20160920112251.log:[00E8:1294][2016-09-20T11:22:52]i326: 删除了依赖项:{9b3936b0-e973-47b9-afb2-de70664-afb2-de70664 包, IISpCoredMod 包, IISpCored_xNetCoredMod_A

schema 和 aspentcore.dll 都存在于磁盘上,并且 _applicationHost.config_ 指向正确的位置。

_The Module DLL C:\WINDOWS\system32\inetsrvaspnetcore.dll 事件日志中的错误代码加载失败。 数据是错误的。_是: <Binary>7E000000</Binary>

@jhkimnew这是我的输出

dd_DotNetCoreTools__20160922122518.log:[3644:372C][2016-09-22T12:25:19]i101:检测到包:AspNetCoreModule_x86,状态:不存在,缓存:无
dd_DotNetCoreTools__20160922122518.log:[3644:372C][2016-09-22T12:25:19]i101:检测到包:AspNetCoreModule_x64,状态:存在,缓存:完成
dd_DotNetCoreTools__20160922122518.log:[3644:372C] [2016-09-22T12:25:21] I000:设置字符串变量 'WixBundleLog_AspNetCoreModule_x64' 到值 'C:\ Usersjdunn \应用程序数据\本地\ TEMP \ dd_DotNetCoreTools__20160922122518_002_AspNetCoreModule_x64.log'
dd_DotNetCoreTools__20160922122518.log:[3644:372C][2016-09-22T12:25:21]i201:计划包:AspNetCoreModule_x86,状态:缺席,默认请求:缺席,回滚:无,请求:无缓存:不,未缓存:不,依赖:无
dd_DotNetCoreTools__20160922122518.log:[3644:372C][2016-09-22T12:25:21]i201:计划包:AspNetCoreModule_x64,状态:存在,默认缓存请求:修复,ba请求:修复,执行,修复:无: 不, 取消缓存: 不, 依赖: 注册
dd_DotNetCoreTools__20160922122518.log:[319C:10BC][2016-09-22T12:26:38]i304:已验证的现有有效负载:AspNetCoreModule_x64 在路径:C:\ProgramData\Package Cache059-CCF785C059-CCF756-B56-B56-855C 9.1965\packages\aspnetcoremodule_x64_en_rc2_14.msi。
dd_DotNetCoreTools__20160922122518.log:[319C:377C][2016-09-22T12:29:28]i301: 应用执行包:AspNetCoreModule_x64,操作:修复,路径:C:\ProgramData\50CF25B95-CF5B7BCache A5765C485F29}v0.9.1965\packages\aspnetcoremodule_x64_en_rc2_14.msi,参数:'ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7"'
dd_DotNetCoreTools__20160922122518.log:[3644:372C][2016-09-22T12:29:33]i319:应用执行包:AspNetCoreModule_x64,结果:0x0,重启:无
dd_DotNetCoreTools__20160922122518.log:[319C:377C][2016-09-22T12:29:33]i325: 注册依赖:{22041006-8484-4b8d-a13c-4018d-a13c-4018 包提供者,IISpCored_4018,包提供者,IISpCoredModCore6:4018 包提供程序:
dd_DotNetCoreTools__20160922122518.log:[3644:372C][2016-09-22T13:32:49]i410: 变量:WixBundleLog_AspNetCoreModule_x64 = C:\Usersjdunn\1600000000000000000000000000000000000000000000000002000000020202000000000000000001000000000009-220202020202020203020202030000000009-22T13:32:49 变量

@jhkimnew就我而言,即使我的机器上安装了该工具,我也从未构建过 ASP.NET Core 应用程序。 我有一个带有 ASP.NET 4.0 应用程序的 Windows 7 x64,在32 位应用程序池中运行。 升级到 Windows 10 后,任何在此池中加载应用程序的尝试都会导致错误。 我相信当我禁用 32 位选项时错误消失了,尽管这对我来说不是一个好的解决方案,因为我的应用程序需要加载为 32 位。 希望这可以帮助。

@reijerh您输出的最后一行对您运行 int 的问题有一个有趣的提示。
由于某些原因,aspnetcore 模块被卸载(被移除)。
您能否附上 dd_DotNetCoreTools__20160920112251.log 文件,以便我们检查删除它的原因?

当然,必须添加 .txt 扩展名才能上传。 还从日志中的路径中删除了我的用户名。

dd_DotNetCoreTools__20160920112251.log.txt

@reijerh能否附上安装的所有日志(%temp% 下以 dd_DotNetCoreTools 开头的所有内容)

是的,请注意我现在已经修复了 Tooling Preview 2。

aspnetcore.zip

我刚刚完成了 Windows 10 更新,现在 IIS 根本无法运行。 当我尝试访问我在 IIS 中配置的任何站点时,我在事件查看器中收到此错误:

模块 DLL C:\WINDOWS\system32\inetsrvaspnetcore.dll 加载失败。 数据是错误的。

我有完全相同的问题。 每次启动时,一个应用程序池会在几秒钟后停止工作。 错误日志表明:模块 DLL C:\WINDOWS\system32\inetsrvaspnetcore.dll 加载失败。 我昨天安装了 ASP .NET Core Visual Studio 更新。

如果您只使用 Asp.Net,则不需要 aspnetcore.dll 模块,最好的解决方法是删除该设置。

我想你在这里错过了一些东西。 过去我可能会也可能不会使用 ASP.NET Core 作为 IIS 的一部分,但我没有手动更改任何设置。 一些 Windows 更新已经吸收了一些搞砸了 IIS 的东西。

我能解决这个问题的唯一方法是完全卸载 IIS、ASP.Net,重新启动我的计算机,然后重新安装并重新启动。

@reijerh我们检查了日志文件。 您发送的所有日志文件都是在 2016 年 9 月 20 日之后创建的。

通过阅读日志文件,我们注意到您在 9/20 将 1.0.0 升级到 1.0.1,并在 9/28 修复了 1.0.1。
9 月 20 日,没有对 aspnetcore.dll 采取任何措施,我们找不到任何证据证明 aspnetcore.dll 文件损坏或删除的原因。
1.0.0 和 1.0.1 具有相同版本的 aspnetcore.dll,我们不会在将 1.0.0 升级到 1.0.1 时卸载/安装该文件。
所以,我猜你在 9/20 之前卸载了 aspnetcore.dll 文件。
您是否发送了所有日志文件? 显然,您在 9/20 之前安装 1.0.0 时没有发送日志文件。 为了了解真正发生了什么,我们需要所有的日志文件。
如果您没有清理日志文件,您是否会创建另一个 zip 文件,其中包含文件名以“dd_”开头的所有日志文件 (.log),以便我们了解 9/20 之前发生的情况?

什么是 %temp%?
什么是ANCM?

基本上,我不知道。 我过去安装过 ASP.Net Core 预览版。 但是,直到前几天,IIS 完全被炸毁了——不仅仅是对于核心实例——所有实例。 这是我所知道的一切。

行。 这是我的日志:
https://dl.dropboxusercontent.com/u/79781769/Logs.7z

至于你说的这个ANCM的东西,我已经安装了很多东西。 很多时候,VS 会告诉我“有一个新版本的 .NET Core 可用”,所以我点击了链接,但它不起作用。 所以,然后我用谷歌搜索并寻找其他一些可能有效也可能无效的安装程序。

我没有错过任何东西。 这就是那里的全部。

不,事实并非如此。 我的机器上没有其他用户。

现在已经太晚了。 IIS 被炸了。 很多人会去对付它。

现在为打翻的牛奶哭泣没有用。 人们只需要完全卸载 IIS 并重新安装。

@MelbourneDeveloper对不起,但我决定删除我关于变通方法的文章,因为它似乎在找出根本原因之前引起了一些混乱。 找出根本原因后,我会再写一篇。

@jhkimnew抱歉,这就是我的 _%temp%_ 中以 _dd_dotnetcoretools_ 开头的所有内容。 哦,等一下,您想要以 _dd__ 开头的所有内容,请稍等。

编辑:在这里, dd.zip

很抱歉文件的修改时间戳被匿名化修改。

@reijerh看来您丢失了有关 1.0.0 的日志文件。 我们找不到任何信息,为什么 aspnetcore.dll 无法通过提供的日志文件加载到您的计算机上。

如果有人再次遇到此问题,在修复 .NetCore 工具之前,请收集以下信息并将其发送给我们,以便我们能够在问题仍然发生时弄清楚发生了什么。

  1. 完整的事件错误信息
    (仅供参考,通过事件错误,我们可以确定是哪个 aspnetcore.dll 文件导致了问题,%windir%\system32\inetsrvaspnetcore.dll 或其他目录中的不同文件)
  2. 请确认事件错误中显示的aspnetcore.dll 文件是否不存在。 您可以简单地运行“dir [aspnetcore.dll 的文件路径]”以获取该信息。 如果有问题的aspnetcore.dll路径从%windir%\system32\inersrv目录开始,并且你的机器安装了64位操作系统,请确认%windir%\syswow64\inetsrvaspnetcore.dll文件是否存在。
  3. 请确认aspnetcore_schema.xml 文件是否存在。 IIS 的架构文件位于“%windir%\System32\inetsrv\config\schema”或 IISExpress 的“%ProgramFiles%\IIS Express\config\schema”
    (仅供参考,我们想知道是只删除了 aspnetcore.dll 还是同时删除了它的架构文件)
  4. 请告诉哪个 applicatiohost.config 文件具有有问题的 aspnetcore.dll 文件配置设置,%windir%\system32\inetsrv\config\applicationhost.config 或“您的解决方案路径”.vs\config\applicationhost.config。 您可以使用 notepad.exe 打开该文件并搜索 aspnetcore.dll 以查找该信息。
  5. 请从以下情况告诉何时发生此问题:
    1) 安装新的 Windows 10 更新后
    2) 从下层版本操作系统升级操作系统后
    3)安装其他软件包后,例如新版本的.NetCore
  6. 如果您在安装新的 Windows 10 更新后或从较低版本的操作系统升级操作系统后遇到此问题,请告知我们您在升级操作系统之前使用的操作系统和操作系统版本
  7. 如果您在安装新的 Windows 10 更新后或从较低版本的操作系统升级操作系统后遇到此问题,请发送 %windir%\iis.log 文件,该文件是 IIS 安装日志文件,其中包含一些有关 IIS 安装活动的详细信息操作系统升级
  8. 如果在此问题发生之前,您使用的是 aspnetcore.dll,请告诉我们您从以下情况安装 aspnetcore.dll 文件的方式:
    1) 我安装了最新的 .NetCore 工具或其他旧版本
    2)我安装了旧版本的.NetCore工具(或不同名称的包)安装程序
    3)我下载了ANCM(AspNetCore模块)安装程序(.msi)并运行安装程序安装aspnetcore.dll
    4)我将aspnetcore.dll文件从另一台机器复制到我的机器上,自己手动配置,没有运行任何其他安装程序
    5)我从来没有安装过
    6)我不知道我是否安装了它

@jhkimnew如果您想重现自己,如果您已经获得了最新版本,那么在从 Windows 10 的一个 BUILD 升级到较新的版本(不要与安装累积更新相混淆)时,这很简单并且 100% 的情况都会发生VS 和工具已安装,并且正在 IIS 中的 32 位应用程序池中运行您的站点。 例如:从 1511 升级到 1607(这是该线程中大多数遇到此问题时所做的...不过,如果您查看线程的开头,您会看到我们中的几个人警告说,当我们运行时,这将是一个问题在 1607 发布之前发布到内部程序的每个新版本都包含在内)。 如果您已经在 1607 上,最简单的重现方法是加入 Insider 计划并更新到最新的 Insider 版本。 它会发生。 我不确定 .net 核心日志会向您显示任何内容,因为在更新 Windows 构建时出现问题,而不是在安装 .net 核心时。 修复 .net 核心总是可以修复它。

要从头开始(或者说,在 VM 中):

  1. 安装 Windows 10 1511 或更早版本。
  2. 添加 IIS & .Net & MVC。
  3. 安装 Visual Studio 2015 和所有 MVC 工具更新(这将安装 aspnetcore)。
  4. 构建一个演示 MVC 应用程序并将其安装在 IIS 中,将其应用程序池设置为在 32 位模式下运行。
  5. 在这一点上,一切都应该完美无缺。
  6. 使用 Windows 更新,更新到 Windows 10 1607。
  7. 利润。 或者更确切地说......在您第一次尝试运行 32 位 mvc 站点(它甚至不需要/使用 .netcore)时享受体验这个错误。

@BryanTheCrow这不会在所有机器上重现。 我有两个每周更新,这还没有发生。

@Tratcher有趣。 让我们尝试确定差异。 在最近更新版本的那些机器上,您是否还:

  1. 是否安装了 Visual Studio 2015 + Update 3 + MVC + 工具更新(包括 dotnetcore)?
  2. 安装了 IIS
  3. 在 IIS 中配置了一个 MVC(不是 dotnetcore)站点
  4. 为该站点使用 32 位应用程序池

1 是,2 是,3 否 - 我主要测试核心站点。 4 号

@BryanTheCrow如果你能重现这个问题,你会收集我上面问的信息吗? 并请观察升级操作系统前后 aspnetcore.dll 文件的变化情况。 为了观察到这一点,您需要在升级操作系统之前检查您的机器是否同时具有 %windir%\system32\inetsrvaspnetcore.dll 和 %windir%\syswow64\inetsrvaspnetcore.dll 并记下文件大小。 然后在升级操作系统后进行比较。

@Tratcher很确定这只会影响 32 位 dotnetcore.dll。 我想知道如果您可以在其中一台机器上重现,您是否将您网站的 iis 应用程序池之一切换到 32 位? 如果没有,则可能需要常规 mvc 应用程序。

@jhkimnew我不打算在几个月内再次运行内部版本(我喜欢等到新功能发布并且事情不再那么不稳定)。 虽然通过执行我上面列出的操作很容易重现,但完成设置确实需要几个小时,而且我现在真的没有时间。

由于您似乎是研究修复程序的人,我只是假设您想为自己重现。 如果没有,下次我安装新版本时,我会回来查看是否没有其他人复制并发布对上述所有问题的回复。

@BryanTheCrow dotnetcore.dll是什么? 可能是 aspnetcore.dll 的拼写错误?
同时,您能否将%windir%\iis.log发送到您的机器上,并请告知您何时升级操作系统,以便我们通过IIS安装日志查看当天发生的情况。
并请从“Visual Studio 2015 + Update 3 + MVC + 工具更新”的重现步骤中解释我需要为“MVC + 工具更新”做什么。
有几个工具包包构建,所以我想按照你所做的完全相同的步骤,这就是为什么我想要详细信息如何做到这一点。

@jhkimnew是的,对不起......快速打字。 我的错。

抱歉,我的记忆有点模糊,因为我没有明确尝试安装 ASP.Net Core。 它带有其他更新之一,或者甚至可能是 VS2015 的初始安装。 我不认为你如何安装它很重要,只是你安装它......也就是说,这是我记得的步骤......其中许多步骤可能不是重现所必需的,但是为了您的利益完成后,我将包括它们:

  1. 在 Win 10 Pro(rs1 之前的版本)上,使用 Turn Windows features/on/off,并配置以下检查(如果你愿意,跳过 Hyper-V。我知道我在有/没有它的情况下遇到过这个问题):
  2. 通过扩展和更新对话框(以及右上角的小标志)按照更新提示安装带有更新 3 和更新到最新版本的 Visual Studio 2015...我记得需要 Azure 更新。 那可能已经安装了 aspnetcore...我不记得明确安装它...我认为它与 VS 2015 或初始工具更新之一捆绑在一起。 我正在使用 VS Enterprise,以防万一。
  3. 使用 VS 2015 的扩展和更新对话框,仔细检查以确保您安装了 Microsoft ASP.NET 和 Web 工具以及 Microsoft ASP.NET Web 框架和工具(我记得在安装 VS2015 时已经安装了这些,但我可能错了,所以值得仔细检查)。 如果没有,请安装它们。
  4. 使用 Web 平台安装程序安装 MVC3 语言包安装程序和 URLRewrite 2.0
  5. 重启。
  6. 使用 Windows 更新,安装安全更新(但不要更新内部版本)。
  7. 在 IIS 中配置一个基本的 MVC 4 站点(例如:模板/演示应用程序)。
  8. 将其应用程序池设置为在 32 位模式下运行。
  9. 验证它是否有效。

那时,我唯一需要重现的步骤是通过 Windows 更新过程升级到新版本。 更新后,我在尝试加载 DotNetCore 模块和 URLRewrite 模块时遇到错误,在第一次尝试加载页面时会杀死应用程序池。 在“添加/删除程序”中对两者进行修复可修复它们。

这是我当前的 IIS 日志。 我不是 100% 确定,但我相信我在 1607 出现并从头开始重新配置时对其进行了全新安装,所以我不确定这会有所帮助。

iislog.zip

我想知道是否值得查看 %windir%\Windowsupdate.log 以查看是否有任何痕迹显示机器上的升级修改了什么。 IIS 是一项操作系统功能,因此升级操作系统可能会影响该功能,并且不一定支持已安装的其他项目,例如 ANCM。

升级操作系统可能会影响这一点,并且不一定会尊重已安装的其他项目,例如 ANCM。

@joeloff这当然似乎是这里发生的事情,因为它也影响 URLRewrite 2.0。 通过“打开/关闭 Windows 功能”安装的模块没有问题。 但是,当尝试在 32 位应用程序池中使用模块时,构建更新过程中的某些内容似乎会杀死一些(但不是全部)模块。

@BryanTheCrow好的,我按照您的重现步骤找到了一致的重现步骤。 非常感谢你的帮助。 我能够在我的机器上重现这个问题。 发生此问题时,%windir%\syswow64\inetsrv 目录中的aspnetcore.dll 在升级操作系统后消失。
我将在 IIS 团队的帮助下进一步调查升级操作系统,并尽快向您更新有关此问题的信息。

@jhkimnew很高兴听到它。 希望它会变得很简单。 👍🏻

似乎 IIS 需要带有正确文件路径的更好的错误消息! :)

我在非 Insiders Windows 10 Anniversary 上有过这个。 重新安装 aspnet core 并没有修复它,但是从程序和功能中卸载每个 aspnet core 项目可以。

似乎这正在破坏真正的生产机器 - 在我应该做紧急工作的时候,我花了几个小时试图解决这个问题。 我不相信我什至选择将预览内容放在我的生产机器上; VS做到了吗?

@DanTup是的,任何 Windows 10 构建更新都会触发此操作(包括周年更新)。 对于已经使用 1607 的人来说,内部更新只是最简单的重现方式,因为他们每周都会发布一个新版本,而不是每两年发布一次。

通过“程序和功能”修复“Microsoft .NET Core 1.0.1 - VS 2015 Tooling Preview 2”可以修复它,而无需卸载每个项目(不过,这也可以)。

@BryanTheCrow 令人担忧的是,这样一个严重的错误已经知道了几个月并且正在影响生产机器(从我从@shanselman收到

修复似乎对我不起作用; 尝试了几次,包括重新启动:-(

我对 MS 代码质量的信心每个月都在下降; 我们比以往任何时候都花更多的时间来解决不属于我们自己的问题,而且似乎没有人关心:-/

不要担心,@DanTup。 @jhkimnew (上图)最近已确认/转载,并正在与相关的各个团队合作以

感谢所有报告问题的人。

根本原因

IIS 升级路径存在错误。 在操作系统升级期间,不会保留C:\Windows\SysWOW64\inetsrv目录中的非操作系统文件。 如果您有任何未作为 Windows 的一部分提供的 IIS 模块并将文件放在inetsrv目录中,它们将被破坏。 ASP.NET Core 模块、HTTP 平台处理程序、URL 重写、SEO 优化工具包是 IIS 模块,会在操作系统升级期间中断。 如果您也使用其他第三方模块,则可能会遇到此问题。

我什么时候会遇到这个问题?

如果您在操作系统升级之前安装了上述任何模块,然后尝试在操作系统升级后以 32 位模式运行任何应用程序池。
即使您的应用程序不使用不可用的模块,您也会遇到此问题。

有什么工作?

修复在您的操作系统升级期间被破坏的所有模块。

我如何知道缺少哪些模块?

您应该会在事件查看器中看到一个错误

Log Name:      Application
Source:        Microsoft-Windows-IIS-W3SVC-WP
Date:          10/17/2016 5:42:22 PM
Event ID:      2280
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      repro-machine
Description:
The Module DLL C:\WINDOWS\system32\inetsrv\rewrite.dll failed to load.  The data is the error.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-IIS-W3SVC-WP" Guid="{670080D9-742A-4187-8D16-41143D1290BD}" EventSourceName="W3SVC-WP" />
    <EventID Qualifiers="49152">2280</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2016-10-18T00:42:22.911610400Z" />
    <EventRecordID>589</EventRecordID>
    <Correlation />
    <Execution ProcessID="0" ThreadID="0" />
    <Channel>Application</Channel>
    <Computer>repro-machine</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="ModuleDll">C:\WINDOWS\system32\inetsrv\rewrite.dll</Data>
    <Binary>7E000000</Binary>
  </EventData>
</Event>

你什么时候会真正修复它?

我们现在正在测试一个修复程序,当我可以分享一个具体的日期/Windows 版本时我会更新这个空间来修复它

此问题已在 Windows Insider Build 15002 中修复

值得指出的是,即使错误消息显示“模块 DLL C:\WINDOWS\system32\inetsrv\rewrite.dll加载失败”,实际丢失的文件是C:\WINDOWS\syswow64\inetsrv\rewrite.dll 。 32 位 IIS 工作进程对system32目录的访问被重定向到syswow64

就像遇到这个问题一样,为我解决这个问题的是编辑应用程序池(默认)
image
禁用 32 个应用程序回收应用程序池并且它起作用了。 再次停止应用程序池重新启用 32 位支持,它仍然有效,是否有可能只是在赢得 10 周年更新后没有正确设置?

@GMZ听起来您的工作进程在重新启用 32 位支持后尚未重新启动。 尝试强制 AppPool 回收,您应该仍然看到此问题仍然存在。

https://www.microsoft.com/net/core#windows
下载
.NET Core 1.0.1 - VS 2015 Tooling Preview 2
并安装

此问题已在 Windows Insider Build 15002 中修复

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

guardrex picture guardrex  ·  3评论

TanvirArjel picture TanvirArjel  ·  3评论

ipinak picture ipinak  ·  3评论

groogiam picture groogiam  ·  3评论

UweKeim picture UweKeim  ·  3评论