2011-01-10 3 views
6

Я пытаюсь выполнить классические ASP-страницы в окне 64-битного окна Windows 2008.Classic ASP: C0000005 Ошибка при выполнении

Первоначально проблема заключалась в регистрации DLL: теперь это исправлено. Register DLL file on Windows Server 2008 R2

Теперь, когда я пытаюсь получить доступ к странице, я получаю эту ошибку

Active Server Pages ошибка 'ASP 0241'

CreateObject Исключение

index.asp

CreateObject из '(null)' вызвал исключение C0000005.

Ошибка сервера объект 'ASP 0177: c0000005'

При изменении кода от Server.CreateObject до CREATEOBJECT .. Я заканчиваю с этой ошибкой

Active Server Pages ошибка «ASP 0115 'Неожиданная ошибка index.asp

Ошибка внешней ошибки (C0000005) произошла во внешнем объекте. Сценарий не может продолжаться.

Я проверил все, что мог - Права доступа и администратора и т. Д. Пул приложений установлен в режим «Без управляемого кода + классический».

Любые идеи исправить это?

+1

Какой объект вы создаете? – bzlm

+0

Каков объект, который вы пытаетесь создать? – Sparky

+0

Это нестандартный объект. Извлекает кое-что из db. У меня зарегистрирована dll. Нет исходного кода. –

ответ

2

Вы не собираетесь исправлять это в ASP. C0000005 - это исключение нарушения доступа. Это происходит, когда код пытается прочитать память, которую он не выделил.

dll делает что-то плохое при загрузке или во время строительства объекта.

Вы протестировали DLL с помощью простого файла .vbs?

+1

, если вы собираетесь попробовать это из VBS, обязательно используйте файл vbscript.exe, который соответствует «битности» DLL ASP ISAPI. – Mark

+0

Это действительно интересно. Я создал онлайн-файл vbs только для создания объекта. Когда я выполнил из своего собственного каталога, я получил эту ошибку «(null): 0x800700C1» Когда я скопировал dll и файл vbs в c: \ windows \ syswow64 \ и выполнил файл .. Я получаю эту ошибку «Консоль Microsoft бАЗ хост скрипт перестал работать " С EventVwr " Сигнатура проблемы: P1: P2 cscript.exe : 5.8.7600.16385 P3: 4a5bc670 P4: StackHash_0a9e P5: 0.0.0.0 P6: 00000000 P7: 02ca0068 P8: c0000005 P9: 00000008 P10: « –

+0

@Broken Link: Если вы специально не используете [c | w] script.exe в папке syswow64, вы были бы запущены с 64-разрядной версией, но ваша dll будет 32-битной. Ошибка C1 (ERROR_BAD_EXE_FORMAT), скорее всего, жалуется на это. Когда вы запускаете 32-битную версию cscript, вы видите ту же ошибку, что и в ASP. Это подтверждает, что ваша dll сломана и нуждается в исправлении. – AnthonyWJones

-2

Вы можете проверить эту запись в блоге, под названием «Классический ASP (ASP 3.0) не работает на 64-битных с 32bit COM объектов» http://blogs.msdn.com/b/robgruen/archive/2005/05/26/422328.aspx

это немного устаревшей и автор неправильно относится к ASP обработчик как фильтр ISAPI (это расширение, а не фильтр), но в остальном информация кажется хорошей.

Если обработчик asp скомпилирован только как 64 бит, вы не сможете загрузить в него 32-битный COM-объект независимо от того, что вы делаете.

автор действительно упоминает о решении COM +. У меня такое ощущение, что 32-битный пакет COM + процесса может загрузить этот 32-битный COM-объект, и ваша страница ASP могла бы выполнять перекрестные вызовы для этого пакета COM +.

удачи, Марк

1

У меня была точно такая же ошибка.

В моем случае ошибка C0000005 была вызвана отсутствующей зависимостью.

ProcessMonitor поможет мне найти его. (Фильтровать по процессу и проверить «Имя не найдено») Name not found on dll

Копирование необходимого файла в правильном месте разрешило мою проблему. (В моем случае VB6FR.dll был необходимой зависимостью для vb6 на французском языке.)

0

Я провел несколько часов, преследуя это также.

В моем случае это было вызвано повторным использованием объекта набора записей несколько раз, не закрывая его между вызовами БД. Код работал без видимой проблемы в нескольких подобных случаях, а затем один из них просто прекратил терпеть процесс.

Ошибка произошла, когда я попытался закрыть набор записей в конце страницы, что затруднило процесс устранения неполадок.

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

0

Для моего опыта вы используете AVG Free, и после обновления у вас возникла такая ошибка.

0

Просто наткнулся на эту же ошибку, пытаясь использовать мой собственный контроль com, и в моем случае это оказалось вызвано тем, что моя dll была скомпилирована в режиме отладки.

Есть два способа вокруг этого:

  1. Запуск IIS в режиме отладки. Для 32-разрядной вы используете следующую строку: C: \ Windows \ SysWOW64 \ inetsrv> w3wp.exe -debug

    Обратите внимание, что вам необходимо остановить службу IIS, а для 64-битного - использовать в System32.

  2. Компиляция версию выпуска :)

0

Я была такая же ошибка при загрузке данных CSV-файла больше, чем один раз. Шаг 1 - Сначала создайте временную таблицу для передачи данных csv в таблицу temp, а затем перейдите в основную таблицу и удалите временную таблицу после перемещения данных. Это необходимо сделать программно.

Шаг 2 - Перейдите в mysql и выберите базу данных и используйте этот запрос (SHOW FULL PROCESSLIST;) использовать без балансировки. это покажет вам статус запущенных объектов. Если вы найдете какой-либо объект со статусом «Сон», его нужно очистить до 2-й попытки загрузить файл. обычно время ожидания по умолчанию составляет около 28000 секунд. Вы должны уменьшить его согласно требованию. Код для сокращения времени ожидания (SET GLOBAL wait_timeout = 5;). Используйте без тормозов. Используйте это mysql. это приведет к повторному установлению глобального времени ожидания до 5 секунд (изменение в соответствии с вашими потребностями). Это должно решить вашу проблему. Всего наилучшего.