IIS 7 «Ошибка Server.CreateObject» - PullRequest
1 голос
/ 12 марта 2009

Я установил IIS7 на свою рабочую станцию ​​и включил совместимость с IIS6, чтобы я мог тестировать классические страницы asp (для некоторых старых проектов здесь на работе).

Некоторые страницы работают, а другие нет.

Я получаю:

Serverobject error 'ASP 0177 : 800401f3'

Server.CreateObject failed

/master.central.be/master_connection.asp, line 55

800401f3

В этой строке у меня есть:

Set dicTalenLabels = Server.CreateObject("Scripting.Dictionary")

У кого-нибудь есть идеи, что делать, чтобы это исправить?

Edit:

Как предположил Майкл Прайор, я запустил VBScript с похожим кодом, и это было успешно. Так что, вероятно, что-то связано с разрешениями. В настоящее время пытаюсь выяснить, какие именно файлы ...

Нужно ли добавлять IUSR в scrrun.dll? При попытке у меня нет разрешения, хотя я и являюсь администратором.

Ответы [ 4 ]

4 голосов
/ 31 марта 2009

Отредактировано: у него 32-битная перспектива, так что это определенно не 64-битные проблемы.

Создайте файл test.vbs и поместите его в него

Dim o: Set o = CreateObject ("Scripting.Dictionary")

Тогда запусти это так

cscript.exe test.vbs

Это выдает ту же ошибку?

Если это произойдет, то происходит сбой regsvr32 или что-то не так с ключами реестра, которые он обычно помещает в реестр.

Если это не дает сбоя, вероятно, пользователь, у которого запущена ваша страница asp (по умолчанию это IUSR_machinename), не имеет прав ни на необходимые ему ключи реестра, ни на фактические .dll

2 голосов
/ 12 марта 2009

0x800401f3 означает, что «Scripting.Dictionary» является неправильным или не найден. Scripting.FileSystemObject предоставляется тем же файлом dll, и я знаю, что некоторые хосты отключили это, отменив регистрацию файла dll, что также отключило бы объект Dictionary. Не могли бы вы проверить, работает ли Scripting.FileSystemObject?

Оба объекта предоставляются Windows \ System32 \ scrrun.dll (или Windows \ SysWOW64 \ scrrun.dll, если вы выполняете 32-разрядную версию на 64-разрядной машине). Проверьте разрешения для этого файла и проверьте, какие привилегии выполняет ваш сценарий asp.

0 голосов
/ 04 декабря 2018

Я обнаружил, что вызовы системных объектов, таких как

set rs = server.createobject("adodb.recordset") 

и

set fs = server.createobject("scripting.filesystemobject");

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

Возможно, разработчик забыл «закрыть» и «ничего не устанавливать» объекты. Любые объекты, которые вы создаете с помощью 'set', должны быть разрешены для удаления, если для них после использования ничего не задано.

set rs = server.createobject("adodb.recordset")
rs.open sql, db, 1, 3       ' adOpenKeyset, adLockOptimistic
' some process here
rs.close
set rs = nothing
0 голосов
/ 31 марта 2009

Взгляните на:

Обе ссылки взяты из блога Билла Стейплса, он один из главных специалистов по IIS, и советы в первой ссылке помогли мне разобраться, когда я пытался запустить Classic ASP.

...