我在.NET中有这样的功能
Public Class P
Public Function GetObjectForMyClass(ByVal _MyClass As MyClass) As MyClass
_MyClass.Name="Mahi New"
Return _MyClass
End Function
End Class
现在我们有以下经典ASP页面:
<%
Dim P
Dim MyClass
Set P = Server.CreateObject("Project.Assembly.Namespace.P")
Set MyClass = Server.CreateObject("Project.Assembly.Namespace.MyClass")
MyClass.Name="Mahi"
MyClass= P.GetObjectForMyClass(MyClass)
...
...
...
%>
这给出了这样的错误:
Microsoft VBScript运行时错误“800a0005”
无效的过程调用或参数:'GetObjectForMyClass'
答案 0 :(得分:0)
您是否在livrary上公开了COM接口?
如果没有,要从.NET类型库公开COM接口,以便可以从经典ASP页面调用它,我们需要:
确保分配了程序集GUID,例如:
[assembly: Guid("dde7717b-2b75-4972-a4eb-b3d040c0a182")]
确保COMVisible属性为True -
[assembly: ComVisible(true)]
检查项目选项“注册COM互操作”
在类上放置GUID属性,例如 [GuidAttribute( “4df74b15-d531-4217-af7e-56972e393904”)]
确保您的代码中包含名称空间声明:
using System.Runtime.InteropServices;
使用Regasm.exe注册
修改强>
鉴于您已公开COM接口,您是否尝试过以下(使用set
):
set MyClass= P.GetObjectForMyClass(MyClass)