我正在使用asp开发一个旧项目 在我成为.net开发人员
之前,我从未使用过vb6或asp反正
我创建了一个.net dll并更改了一些编译选项以使其与vb6一起使用 代码无关紧要
我在vb6
中创建了一个“wrapper kinda”dllPublic 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错误'800a0005'
无效的过程调用或参数
/asptest/Default.asp,第15行
这不是参数或输出 这部分导致了麻烦
**Dim o
Set o = CreateObject("SHA1Module.Conversion")
EncryptWrapper = CStr(o.EncryptToSHA1(CStr(parameterstring), CBool(isShaIn), CLng(HashType)))**
有人有想法吗?
答案 0 :(得分:1)
Dim o
Dim message
Dim myObject
这些线条值得关注。这些将是一种变体,因为它们不是定义的类型。
Option Explicit
是你在VB6中的朋友 - 永远使用它!
请查看此链接:Avoid program bugs in VB6 with the Option Explicit statement了解详情。
答案 1 :(得分:1)
很多挫折和批处理文件后来我找到了解决方案。 我需要为我的程序集创建一个强名称并在GAC中注册它
这是一个关于如何解决此问题的好的分步教程 Tutorial
这两个步骤帮助了我
8)生成公钥/私钥对
sn -k MarkItUp.key
9)将属性添加到我的程序集中进行注册:
<Assembly: AssemblyKeyFile("C:\MarkItUp.key")>
答案 2 :(得分:0)
你的坏代码中你有
Set o = CreateObject("SHA1Module.Conversion")
应该是
Set o = CreateObject("SHA1Module.Encryption")
答案 3 :(得分:0)
检查IUSR_ 计算机是否有权执行您的dll。