2014-12-02 2 views
2

Я прочитал несколько решений для этой проблемы, но ни один из них не работал для меня. Одна из основных проблем заключается в том, что я уверен, что у меня есть 32-разрядная dll, которую я пытаюсь использовать, и я пытаюсь запустить ее на 64-битном сервере. Также у меня нет исходного кода для dll Interop. Большинство решений, которые я нашел, включали внесение изменений в DLL и перекомпиляцию.CreateServer не будет создавать объект в vbscript в Windows 2008 R2

Я зарегистрировал эту DLL, используя RegAsm.exe. Dll находится в папке C: \ Windows \ SysWOW64. Он, похоже, зарегистрировался хорошо, ошибок не было.

Я пытаюсь перенести классический веб-сайт ASP с Windows Server 2003 (IIS 6) на Windows Server 2008 R2 (IIS 7.5).

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

Я только что скопировал и вставил код с моей классической страницы ASP в сценарий VBS и добавил команду Wscript.echo.

Ниже приведен мой сценарий VBS.

Dim objCrypt, Key, UID, Pwd 
Set objCrypt = CreateObject("MyEncryptionTool.Crypt") 
Key = "1234" ' Encryption Key 

UID = "äRŸê¬ÈH­" 
Pwd = "á@‰ë•ÆW¬" 

Wscript.echo "UID: " & objCrypt.Decrypt(UID, Key) & vbCrLf & "Pwd: " & objCrypt.Decrypt(Pwd, Key) 

сообщение об ошибке, которое производит CScript.exe является:

C:\Windows\SysWOW64\CryptTest.vbs(2, 1) Microsoft VBScript runtime error: ActiveX component can't create object: 'MyEncryptionTool.Crypt' 

Это, по существу, та же ошибка, я получаю в моей классической странице ASP.

Я уверен, что он был скомпилирован 32-битным, а Windows Server 2008 - 64-разрядным и может быть источником моей проблемы прямо там.

Возможно ли использовать 32-разрядную dll для Windows Server 2008 R2?

+0

Я только что запустил Dependency Walker на моей dll. В нем говорится, что отсутствуют GPSVC.DLL и IESHIMS.DLL. И, похоже, есть предупреждение для IEFRAME.DLL и SHLWAPI.DLL. Я не знаю, связано ли это с моей проблемой или нет. Я выбрасываю это для более умных людей, чем я. –

+1

Да, это возможно. Вам нужно включить 32-битные приложения в вашем пуле приложений - по умолчанию установлено значение false. – John

+0

В пуле приложений, который я создал для моего веб-сайта, есть Enable 32bit applications, установленный True, но DefaulAppPool был False. К сожалению, когда я установил DefaultAppPool в True, ничего не изменилось. CreateObject все еще не создает объект. –

ответ

0

Я должен был отправить ответ на этот вопрос в декабре 2014 года, когда я это понял. Это была глупая ошибка оператора. Для инструмента шифрования компании есть два файла dll. У одного есть префикс «interop». а другой нет.

Я использовал один с «interop». префикс, потому что в то время это была единственная dll, о которой я знал. Я нашел версию без префикса и зарегистрировал ее без проблем, и все работает. Это произошло, когда я наконец нашел документацию по инструменту шифрования компании и никогда не упоминал dll с префиксом.