使用.NET函数的结果返回Classic ASP中的类的对象

时间:2011-07-19 10:40:12

标签: asp.net asp-classic

我在.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'

1 个答案:

答案 0 :(得分:0)

您是否在livrary上公开了COM接口?

如果没有,要从.NET类型库公开COM接口,以便可以从经典ASP页面调用它,我们需要:

  1. 确保分配了程序集GUID,例如: [assembly: Guid("dde7717b-2b75-4972-a4eb-b3d040c0a182")]

  2. 确保COMVisible属性为True - [assembly: ComVisible(true)]

  3. 检查项目选项“注册COM互操作”

  4. 在类上放置GUID属性,例如 [GuidAttribute( “4df74b15-d531-4217-af7e-56972e393904”)]

  5. 确保您的代码中包含名称空间声明: using System.Runtime.InteropServices;

  6. 使用Regasm.exe注册

  7. 修改 鉴于您已公开COM接口,您是否尝试过以下(使用set):

    set MyClass= P.GetObjectForMyClass(MyClass)