#dll #vbscript #asp-classic #adodb #iis-10
#dll #vbscript #asp-классический #adodb #iis-10
Вопрос:
Запуск IIS 10 на виртуальной машине Windows Server 2016 для запуска классического приложения ASP, написанного на vbscript. Пул приложений периодически выходит из строя, когда я выполняю инструкцию sql для вставки таблицы в файл .accdb из файла .xlsx Excel. Любой сценарий, связанный с файлом .accdb, работает нормально — как только я добавляю файл .xlsx в уравнение, у меня возникают проблемы. Сценарий выглядит следующим образом:
Set DatabaseConnection = Server.CreateObject("ADODB.Connection")
DatabaseConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source= C:inetpubwwwrootORTDEVQHT2.accdb"
TST0FilePath="C:inetpubwwwrootORTDEVTST0ORIG.xlsx"
ssqlinsertresn ="SELECT * INTO TST0 FROM [Excel 12.0; HDR=YES;DATABASE=" amp; TST0FilePath amp; "]." amp; "[TASKRSRC$]"
DatabaseConnection.Execute ssqlinsertresn
- Когда я запускаю скрипт, файл .xlsx закрывается так же, как и файл .accdb. Я также пробовал различные файлы Excel, чтобы исключить поврежденный файл .xlsx.
- Я считаю, что сценарий правильный. Используя IIS 7.5 в Windows 7, я протестировал скрипт на своем ноутбуке без проблем. Я также сохранил скрипт в виде файла .vbs и запустил вход на сервер, а также на свой ноутбук без проблем.
- Когда он запускается на сервере через IIS, он может привести к сбою пула приложений 1 из 4 раз, но он прерывистый и не согласованный. Даже при сбое скрипт все равно будет выполняться и выполнять инструкцию sql; однако все переменные сеанса будут очищены, как и ожидалось, при сбое пула приложений.
- Я проверил высокую загрузку процессора и утечки памяти — ничего не нашел.
- У меня включена трассировка, но журналы трассировки по этой проблеме не отображаются.
- У меня есть ошибки, отправленные в браузер, включенный — ошибки не отображаются, потому что скрипт выполняется как ожидалось.
- Режим управляемого конвейера установлен на классический, хотя я также тестировал интегрированный. Версия .Net CLR установлена на v2.0.50727, но я также тестировал V4.0.30319. Для 32-разрядных приложений установлено значение true. Максимальный рабочий процесс установлен в 1, поскольку я использую переменные сеанса. Включена защита от быстрого сбоя при максимальном количестве сбоев 10 за 5 минут.
- Я тестирую на сайте разработки, и я единственный, кто его использует.
- DebugDiag сообщает: «Пожалуйста, обратитесь к поставщику Microsoft Corporation для решения проблемы, касающейся следующего файла: C:WindowsSystem32VCRUNTIME140.dll «. В принципе, похоже, что существует необработанное исключение, связанное с VCRUNTIME140.dll . Я вижу DLL, установленную в каталоге, поэтому не похоже, что она отсутствует.
- Средство просмотра событий показывает идентификатор события 5011 — «Процесс, обслуживающий пул приложений ‘ORTDEV’, получил фатальную ошибку связи со службой активации процессов Windows».
- На этой виртуальной машине выполняется не так много. Установлено несколько серверов SQL, но используется только 2014.
Есть какие-либо рекомендации по следующим шагам?
Спасибо
Кит
Ответ №1:
VCRUNTIME140.dll это файл библиотеки динамических ссылок. Он работает аналогично исполняемому файлу, но загружается только тогда, когда это необходимо использующему его программному обеспечению. При использовании Excel или других продуктов Office 365 он также будет использоваться.
VCRUNTIME140.dll это файл, используемый Visual C , распространяемый для Visual Studio 2015. Поэтому, если какой-либо из компонентов пакета C случайно удален, поврежден или не функционирует, программы могут не отвечать и завершиться сбоем. Ошибка, с которой вы сталкиваетесь, часто встречается другими. Самый простой способ исправить это — удалить и переустановить.
- Нажмите Win R и введите appwiz.cpl, найдите записи с именами, начинающимися с Microsoft Visual C 2015 (или Microsoft Visual C 2015-2019) и удалите.
- Перезагрузите компьютер и выполните полное сканирование, удалите все обнаруженные угрозы.
- Загрузите официальный дистрибутив последней версии Visual C 2015 по этой ссылке.
Комментарии:
1. Я переустановил Microsoft Visual C 2015 (32-разрядная версия), и это не устранило проблему. Возможно, потребуется попробовать 64-битную версию.
2. Вы должны установить правильную версию в соответствии с вашим компьютером. Если ваш компьютер 64-разрядный, попробуйте 64-разрядную версию.
3. Ну, не повезло. Я удалил 2015 и 2017 годы. Перезапущен и установлен 2015 как 32-разрядный, так и 64-разрядный. Не сработало, поэтому я удалил их и установил Microsoft Visual C , распространяемый для Visual Studio 2015, 2017 и 2019 для 32-разрядных и 64-разрядных версий. Все еще получаю ту же ошибку. Я полагаю, возможно, что-то не так с моей инструкцией sql, но iy работает на моем ноутбуке без проблем. Здесь я в недоумении.
Ответ №2:
Изменение идентификатора пула приложений с «ApplicationPoolIdentity» по умолчанию на системную учетную запись решило проблему.
Комментарии:
1. Пожалуйста, отметьте этот ответ, чтобы он мог помочь другим с подобными проблемами