VB6 dll работает в приложении VB6, а не в ASP - PullRequest
1 голос
/ 23 августа 2011

Я работаю над старым проектом в asp, я никогда не работал с vb6 или asp, пока я не стал разработчиком .net

В любом случае

Я сделал dll .net и изменилнекоторые опции компиляции, чтобы он работал с vb6, код не имеет значения

Я сделал dll "wrapper kinda" в vb6

Public Function EncryptWrapper(ByVal parameterstring As String, ByVal isShaIn As String, ByVal HashType As String) As String
    Dim o
    Set o = CreateObject("SHA1Module.Conversion")
    EncryptWrapper = CStr(o.EncryptToSHA1(CStr(parameterstring), CBool(isShaIn), CLng(HashType)))
End Function

и форму в vb6, которая вызывает его

    Private Sub Command1_Click()
    Dim message
    Dim myObject
    Set myObject = CreateObject("SHAModuleWrapper.Encryption")
    message = myObject.EncryptWrapper(txtIn.Text, "1", "2")
    Set myObject = Nothing
    txtOut.Text = message
End Sub

это прекрасно работает

сейчас в asp я пытаюсь вызвать эту dll и получаю ошибку

<%  Dim strMessage 
    Dim message
    strMessage = "hello"
    Dim myObject
    Set myObject = Server.CreateObject("SHAModuleWrapper.Encryption")
        message = myObject.EncryptWrapper("testdagtestdagtest", "1", "0")
    Response.Write(message)
%>

это сообщение об ошибке

SHAModuleWrapper error '800a0005 '

Недопустимый вызов или аргумент процедуры

/ asptest / Default.asp, строка 15

Проблема связана не с параметрами или выходными данными, а с этой частью,

**Dim o
Set o = CreateObject("SHA1Module.Conversion")
EncryptWrapper = CStr(o.EncryptToSHA1(CStr(parameterstring), CBool(isShaIn), CLng(HashType)))**

У кого-нибудь есть идеи?

Ответы [ 4 ]

1 голос
/ 24 августа 2011

Много разочарований и пакетных файлов, позже я нашел решение. Мне нужно было создать строгое имя для моей сборки и зарегистрировать его в GAC

Это хорошее пошаговое руководство по решению этой проблемы. Учебник

эти 2 шага помогли мне

8) Создание пары открытый / закрытый ключ

sn -k MarkItUp.key

9) Добавьте атрибут в мою сборку для его регистрации:

<Assembly: AssemblyKeyFile("C:\MarkItUp.key")>
1 голос
/ 23 августа 2011
Dim o 
Dim message
Dim myObject

Эти строки вызывают беспокойство.Это будет вариант, так как они не определенного типа.

Option Explicit ваш друг в VB6 - используйте его всегда!

Посмотрите эту ссылку: Избегайте программошибки в VB6 с оператором Option Explicit для получения дополнительной информации.

0 голосов
/ 30 августа 2011

Убедитесь, что IUSR_ Машина имеет разрешение на выполнение ваших DLL.

0 голосов
/ 23 августа 2011

в вашем плохом коде у вас есть
Set o = CreateObject("SHA1Module.Conversion")
должно быть
Set o = CreateObject("SHA1Module.Encryption")

...