IIS 10 应用程序池崩溃 - WAS 事件 5011 - VCRUNTIME140.dll 问题
IIS 10 App Pool Crashing - WAS Event 5011 - Issue with VCRUNTIME140.dll
运行 Windows Server 2016 虚拟机上的 IIS 10 运行 一个用 vbscript 编写的经典 ASP 应用程序。当我执行 sql 语句以从 .xlsx Excel 文件将 table 插入 .accdb 文件时,应用程序池间歇性崩溃。与 .accdb 文件关联的任何脚本都可以正常工作 - 一旦我将 .xlsx 文件带入等式,我就会遇到问题。脚本如下:
Set DatabaseConnection = Server.CreateObject("ADODB.Connection")
DatabaseConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source= C:\inetpub\wwwroot\ORTDEV\QHT2.accdb"
TST0FilePath="C:\inetpub\wwwroot\ORTDEV\TST0ORIG.xlsx"
ssqlinsertresn ="SELECT * INTO TST0 FROM [Excel 12.0; HDR=YES;DATABASE=" & TST0FilePath & "]." & "[TASKRSRC$]"
DatabaseConnection.Execute ssqlinsertresn
- 当我 运行 脚本时,.xlsx 文件和 .accdb 文件都会关闭。我还尝试了各种 excel 文件来排除损坏的 .xlsx 文件。
- 我相信脚本是正确的。在 Windows 7 上使用 IIS 7.5,我已经在我的笔记本电脑上测试了脚本,没有问题。我还将脚本保存为 .vbs 文件并 运行 登录服务器以及我的笔记本电脑没有问题。
- 当它通过 IIS 在服务器上 运行 时,它可能会在 4 次中有 1 次使应用程序池崩溃,但它是间歇性的并且不一致。即使当它崩溃时,脚本仍然会执行并执行 sql 语句;但是,当应用程序池崩溃时,所有会话变量都将按预期清除。
- 我检查了高 CPU 使用率和内存泄漏 - 没有发现任何问题。
- 我启用了跟踪,但没有针对此问题显示跟踪日志。
- 我打开了发送到浏览器的错误 - 没有出现错误,因为脚本按预期执行。
- 托管管道模式设置为经典模式,尽管我也测试了集成模式。 .Net CLR 版本设置为 v2.0.50727,但我也测试了 V4.0.30319。启用 32 位应用程序设置为 true。 Maximum Worker Process 设置为 1,因为我使用的是会话变量。在 5 分钟内最多出现 10 次故障的情况下开启快速故障保护。
- 我正在一个开发站点上进行测试,而且我是唯一一个使用它的人。
- DebugDiag 说:“请跟进供应商 Microsoft Corporation 以解决有关以下文件的问题:C:\Windows\System32\VCRUNTIME140.dll”。基本上,看起来有一个未处理的异常与 VCRUNTIME140.dll 相关联。目录下可以看到安装的dll,应该不是少了
- 事件查看器显示事件 ID 5011 -“服务应用程序池 'ORTDEV' 的进程与 Windows 进程激活服务发生致命通信错误。”
- 在此虚拟机上 运行ning 并不多。安装了几个 SQL 服务器,但只有 2014 年在使用中。
对后续步骤有什么建议吗?
感谢
基思
VCRUNTIME140.dll是一个动态的link库文件。它的工作方式类似于可执行文件,但仅在使用它的软件需要时才加载。使用excel或其他office 365制作时,也会使用
VCRUNTIME140.dll 是 visual C++ Redistributable for visual studio 2015 使用的文件。因此,如果任何 C++ 包成分被意外删除、损坏或无法运行,程序可能不会响应和失败。你遇到的错误别人也经常遇到。最简单的修复方法是卸载并重新安装。
- 按 Win+R 并键入 appwiz.cpl,找到名称以 Microsoft Visual C++2015(或 Microsoft Visual C++ 2015-2019)开头的条目并卸载。
- 重新启动计算机并执行全面扫描,清除所有检测到的威胁。
- 按此下载最新Visual C++2015 官方分发包link.
将应用程序池标识从默认的“ApplicationPoolIdentity”更改为系统帐户解决了该问题。
运行 Windows Server 2016 虚拟机上的 IIS 10 运行 一个用 vbscript 编写的经典 ASP 应用程序。当我执行 sql 语句以从 .xlsx Excel 文件将 table 插入 .accdb 文件时,应用程序池间歇性崩溃。与 .accdb 文件关联的任何脚本都可以正常工作 - 一旦我将 .xlsx 文件带入等式,我就会遇到问题。脚本如下:
Set DatabaseConnection = Server.CreateObject("ADODB.Connection")
DatabaseConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source= C:\inetpub\wwwroot\ORTDEV\QHT2.accdb"
TST0FilePath="C:\inetpub\wwwroot\ORTDEV\TST0ORIG.xlsx"
ssqlinsertresn ="SELECT * INTO TST0 FROM [Excel 12.0; HDR=YES;DATABASE=" & TST0FilePath & "]." & "[TASKRSRC$]"
DatabaseConnection.Execute ssqlinsertresn
- 当我 运行 脚本时,.xlsx 文件和 .accdb 文件都会关闭。我还尝试了各种 excel 文件来排除损坏的 .xlsx 文件。
- 我相信脚本是正确的。在 Windows 7 上使用 IIS 7.5,我已经在我的笔记本电脑上测试了脚本,没有问题。我还将脚本保存为 .vbs 文件并 运行 登录服务器以及我的笔记本电脑没有问题。
- 当它通过 IIS 在服务器上 运行 时,它可能会在 4 次中有 1 次使应用程序池崩溃,但它是间歇性的并且不一致。即使当它崩溃时,脚本仍然会执行并执行 sql 语句;但是,当应用程序池崩溃时,所有会话变量都将按预期清除。
- 我检查了高 CPU 使用率和内存泄漏 - 没有发现任何问题。
- 我启用了跟踪,但没有针对此问题显示跟踪日志。
- 我打开了发送到浏览器的错误 - 没有出现错误,因为脚本按预期执行。
- 托管管道模式设置为经典模式,尽管我也测试了集成模式。 .Net CLR 版本设置为 v2.0.50727,但我也测试了 V4.0.30319。启用 32 位应用程序设置为 true。 Maximum Worker Process 设置为 1,因为我使用的是会话变量。在 5 分钟内最多出现 10 次故障的情况下开启快速故障保护。
- 我正在一个开发站点上进行测试,而且我是唯一一个使用它的人。
- DebugDiag 说:“请跟进供应商 Microsoft Corporation 以解决有关以下文件的问题:C:\Windows\System32\VCRUNTIME140.dll”。基本上,看起来有一个未处理的异常与 VCRUNTIME140.dll 相关联。目录下可以看到安装的dll,应该不是少了
- 事件查看器显示事件 ID 5011 -“服务应用程序池 'ORTDEV' 的进程与 Windows 进程激活服务发生致命通信错误。”
- 在此虚拟机上 运行ning 并不多。安装了几个 SQL 服务器,但只有 2014 年在使用中。
对后续步骤有什么建议吗?
感谢
基思
VCRUNTIME140.dll是一个动态的link库文件。它的工作方式类似于可执行文件,但仅在使用它的软件需要时才加载。使用excel或其他office 365制作时,也会使用
VCRUNTIME140.dll 是 visual C++ Redistributable for visual studio 2015 使用的文件。因此,如果任何 C++ 包成分被意外删除、损坏或无法运行,程序可能不会响应和失败。你遇到的错误别人也经常遇到。最简单的修复方法是卸载并重新安装。
- 按 Win+R 并键入 appwiz.cpl,找到名称以 Microsoft Visual C++2015(或 Microsoft Visual C++ 2015-2019)开头的条目并卸载。
- 重新启动计算机并执行全面扫描,清除所有检测到的威胁。
- 按此下载最新Visual C++2015 官方分发包link.
将应用程序池标识从默认的“ApplicationPoolIdentity”更改为系统帐户解决了该问题。