【问题标题】:IIS 10 App Pool Crashing - WAS Event 5011 - Issue with VCRUNTIME140.dllIIS 10 应用程序池崩溃 - WAS 事件 5011 - VCRUNTIME140.dll 问题
【发布时间】:2020-12-26 07:01:12
【问题描述】:

在 Windows Server 2016 虚拟机上运行 IIS 10 以运行用 vbscript 编写的经典 ASP 应用程序。当我执行 sql 语句从 .xlsx Excel 文件中将表插入 .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
  1. 当我运行脚本时,.xlsx 文件和 .accdb 文件都关闭了。我还尝试了各种 excel 文件来排除损坏的 .xlsx 文件。
  2. 我相信脚本是正确的。在 Windows 7 上使用 IIS 7.5,我已经在我的笔记本电脑上测试了脚本没有问题。我还将脚本保存为 .vbs 文件,并在登录到服务器和笔记本电脑时运行,没有问题。
  3. 当它通过 IIS 在服务器上运行时,它可能会在 4 次中使应用程序池 1 崩溃,但它是间歇性的且不一致。即使当它崩溃时,脚本仍然会执行并执行sql语句;但是,当应用程序池崩溃时,所有会话变量都会按预期清除。
  4. 我检查了 CPU 使用率高和内存泄漏 - 没有发现任何东西。
  5. 我已启用跟踪,但未显示此问题的跟踪日志。
  6. 我有错误发送到浏览器打开 - 没有错误出现,因为脚本按预期执行。
  7. 托管管道模式设置为经典,虽然我也测试过集成。 .Net CLR 版本设置为 v2.0.50727,但我也测试了 V4.0.30319。启用 32 位应用程序设置为 true。最大工作进程设置为 1,因为我使用的是会话变量。快速故障保护已开启,最多可在 5 分钟内发生 10 次故障。
  8. 我正在开发网站上进行测试,我是唯一使用它的人。
  9. DebugDiag 说:“请与供应商 Microsoft Corporation 联系以解决有关以下文件的问题:C:\Windows\System32\VCRUNTIME140.dll”。基本上,看起来有一个与 VCRUNTIME140.dll 关联的未处理异常。可以看到目录中安装的dll,所以不是丢失了。
  10. 事件查看器显示事件 ID 5011 -“服务于应用程序池 'ORTDEV' 的进程与 Windows 进程激活服务发生了致命的通信错误。”
  11. 此虚拟机上运行的内容不多。已安装多个 SQL Server,但仅使用 2014。

对接下来的步骤有什么建议吗?

谢谢

基思

【问题讨论】:

    标签: dll vbscript asp-classic adodb iis-10


    【解决方案1】:

    VCRUNTIME140.dll 是一个动态链接库文件。它的工作方式类似于可执行文件,但仅在使用它的软件需要时才加载。使用excel或其他office 365制作时也会用到。

    VCRUNTIME140.dll 是 Visual C++ Redistributable for Visual Studio 2015 使用的文件。因此,如果任何 C++ 包组件被意外删除、损坏或无法运行,程序可能无法响应并失败。你遇到的错误是别人经常遇到的。修复它的最简单方法是卸载并重新安装。

    1. 按 Win+R 并键入 appwiz.cpl,找到名称以 Microsoft Visual C++2015(或 Microsoft Visual C++ 2015-2019)开头的条目并卸载。
    2. 重新启动计算机并执行全面扫描,清除所有检测到的威胁。
    3. 点击link下载最新Visual C++2015版本的官方发布。

    【讨论】:

    • 我重新安装了 Microsoft Visual C++ 2015(32 位),但没有解决问题。可能还需要尝试 64 位版本。
    • 你应该根据你的机器安装正确的版本。如果你的机器是64位的,试试64位的版本。
    • 运气不好。我删除了 2015 和 2017。重新启动并安装了 32 位和 64 位的 2015。没有用,所以我删除了这些,并为 32 位和 64 位安装了 Microsoft Visual C++ Redistributable for Visual Studio 2015、2017 和 2019。仍然得到同样的错误。我想我的 sql 语句可能有问题,但我可以在我的笔记本电脑上正常工作。在这里不知所措。
    【解决方案2】:

    将应用程序池标识从默认的“ApplicationPoolIdentity”更改为系统帐户解决了该问题。

    【讨论】:

    • 请标记此答案,以便帮助其他有类似问题的人
    猜你喜欢
    • 2010-10-03
    • 2018-04-25
    • 2017-03-14
    • 2020-09-30
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多