Рейтинг:1

Ошибка: файл home.asp Непредвиденная ошибка. Во внешнем объекте произошла перехватываемая ошибка (C0000005). Использование соединителя ODBC

флаг in

Как я могу заставить свой пул приложений перестать падать на меня?

Задний план

Все работало хорошо много лет, пока я не обновил Windows 10 Pro до предложенного обновления. Пакет возможностей Windows.

введите описание изображения здесь

Текущая система:

Редакция Windows 10 Pro
Версия 21H2
Установлен 24.08.2020
Сборка ОС 19044.1415
Пакет возможностей Windows 120.2212.3920.0

Вероятно, это изменило некоторые разрешения пользователей и способ работы IIS; и до того момента, когда я потерял свой сайт. Пришлось все переустанавливать.

Ошибка (C0000005)

Прошло четыре недели с тех пор, как я обновился с MariaDB 10.1 до MariaDB 10.6, и с этим я перешел с использования драйвера MySQL ODBC 5.1 на MariaDB Connector/ODBC 3.1 (версия 3.01.15.00), который является частью «текущая серия стабильных выпусков."

В этих не очень полезных ошибках отсутствует информация о номере строки, в которой находится ошибка. Они читают:

Файл /home.asp Непредвиденная ошибка. Во внешнем объекте произошла перехватываемая ошибка (C0000005). Сценарий не может продолжать работу.

И выглядеть так:

ошибка (C0000005)


Что я сделал:

Я проверил свой код на наличие открытых подключений к базе данных, как это было предложено в этом сообщении. Классическая ошибка ASP C0000005 но я все еще получаю эти ошибки. Эти случайные (C0000005) ошибки ASP продолжают приводить к падению пула приложений и во многом ведут себя так, как описано в эта тема где может быть виновата некоторая утечка памяти.

Теперь я рассматриваю возможность использования другого драйвера.

Ответы в этой теме Что такое ошибки ASP 0115 и C0000005 предлагает использовать коннектор ODBC версии 5.1.6 (mysql-connector-odbc-5.1.6-winx64.msi), выпущенной в 2009 году. Соединитель MySQL/ODBC 8.0.27 (mysql-connector-odbc-8.0.27-winx64.msi) выглядит более актуально. И я должен попробовать.

Первое, что я заметил, это намного быстрее. Теперь я просто надеюсь, что эти ошибки C0000005 закончатся.


Обновление А: Ошибки все еще возвращаются, но гораздо раньше, чем предполагалось.

я попробовал 32-битный драйвер, а также mysql-connector-odbc-8.0.27-win32.msi, чтобы увидеть, будет ли это работать, но не смог даже загрузить страницу. Думаю, мне нужно будет использовать 32-битный пул приложений, чтобы он работал. (Такого не пробовал.)


Обновление Б: теперь я снова использую 64-разрядный соединитель MySQL/ODBC 8.0.27 Водитель.

Может ли это быть так, как я настраиваю драйвер, который приводит к падению моего пула приложений?

Это моя строка подключения:

Conn_STRING = "dsn=___;" & _
   "TCPIP=1;" & _
   "СЕРВЕР=127.0.0.1;" & _
   "УИД=___;" & _
   "ПВД=___;" & _
   "БАЗА ДАННЫХ=___;" & _
   "ПОРТ=3306;" & _
   "CONN_TIMEOUT=30;" & _
   "CHARSET=utf8mb4;" & _
   "READ_TIMEOUT=20;" & _
   "WRITE_TIMEOUT=10;" & _
   «Опция = 3»

Я задаю параметры подключения так:

связь

метаданные

курсор/результаты

отлаживать

ssl

разное

Я заметил, что каким-то образом пул приложений продолжает работать, несмотря на эти зарегистрированные ошибки:

- <Событие xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <Система>
  <Provider Name="Активные серверные страницы" /> 
  <EventID Qualifiers="49152">5</EventID> 
  <Версия>0</Версия> 
  <Уровень>2</Уровень> 
  <Задача>0</Задача> 
  <Код операции>0</Код операции> 
  <Ключевые слова>0x80000000000000</Ключевые слова> 
  <TimeCreated SystemTime="2021-12-23T21:41:37.9772561Z" /> 
  <EventRecordID>2212200</EventRecordID> 
  <Корреляция /> 
  <Execution ProcessID="0" ThreadID="0" /> 
  <Канал>Приложение</Канал> 
  <Компьютер>vm-white</Компьютер> 
  <Безопасность/> 
  </Система>
- <Данные События>
  <Данные>Файл /blog.asp Непредвиденная ошибка. Во внешнем объекте произошла перехватываемая ошибка (C0000005). Сценарий не может продолжать работу.</Data> 
  </EventData>
  </Событие>

Я также вижу новое предупреждение в системном журнале.

Процесс, обслуживающий пул приложений myPool, потерпел фатальную ошибку.
ошибка связи со службой активации процессов Windows.
идентификатор процесса был «1124». Поле данных содержит номер ошибки.


ОБНОВИТЬ

Я устал от множества разных драйверов ODBC. Драйверы MariaDB ODBC и MySQL ODBC. Ни один из них не предотвращает сбой пула приложений. Перед сбоем регистрируется множество ошибок C0000005. Драйвер MySQL ODBC 8.0 оказался намного быстрее и щадящим, но что-то все равно снижает пул приложений. Сейчас я использую драйвер MySQL ODBC 8.0 Unicode.

В ODBC MariaDB есть ошибка?

Кроме того, теперь я изменил способ установки объектов. Вместо того, чтобы устанавливать их так

SET rs = Server.CreateObject("ADODB.Recordset")
SET wshell = Server.CreateObject("WScript.Shell")
Сообщение SET = Server.CreateObject("CDO.Message")

я сейчас просто делаю

SET rs = CreateObject("ADODB.Recordset")
SET wshell = CreateObject("WScript.Shell")
УСТАНОВИТЬ сообщение = CreateObject("CDO.Message")

Он выглядит более многообещающе. Некоторые ошибки теперь иногда имеют номера строк.

Я связался с Microsoft, чтобы помочь мне интерпретировать мой отчет об анализе DebugDiag из этих аварий. Я также заметил новую закономерность, которая начала отображаться в журналах ошибок. Первый Страницы активного сервера с последующим Ошибка приложения:

шаблон ошибки

Ошибка страниц активного сервера:

Ошибка: файл /blog.asp Непредвиденная ошибка.Во внешнем объекте произошла перехватываемая ошибка (C0000005). Скрипт не может продолжать работу..

Ошибка приложения:

Имя сбойного приложения: w3wp.exe, версия: 10.0.19041.1, отметка времени: 0x58c67bf3
Имя сбойного модуля: ntdll.dll, версия: 10.0.19041.1288, отметка времени: 0xa280d1d6
Код исключения: 0xc0000409
Смещение ошибки: 0x00000000000a2070
Идентификатор сбойного процесса: 0x3144
Время запуска сбойного приложения: 0x01d7fd9d0686ef42
Путь сбойного приложения: c:\windows\system32\inetsrv\w3wp.exe
Путь сбойного модуля: C:\WINDOWS\SYSTEM32\ntdll.dll
Идентификатор отчета: cda5aa10-492d-4e5c-ae17-ac4f9dbf70ab
Полное имя неисправного пакета: Идентификатор сбойного связанного с пакетом приложения:


Как было предложено здесь на mysql.com я изменил настройки коннектора DSN для использования с ASP. я поставил галочку Возвращать совпадающие строки вместо обработанных строк.

я имел Вариант=3 в моей строке подключения и найден на основе этот блог что я, вероятно, должен объявить это как FLAG_FIELD_LENGTH (1) + FLAG_FOUND_ROWS (2).

Любые предложения приветствуются.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.