嗨经典 ASP 专家,
基本上,我是 Classic ASP 和 VBScript 的新手,在尝试将复杂类型的参数传递给 COM 方法时遇到了这个“VBScript 运行时错误:无效的过程调用或参数”(参见下面的屏幕截图)。在创建服务器对象并将字符串传递给 COM 方法时,任何传递复杂类型参数的尝试都是徒劳的。
请帮忙。
这是代码片段:
ClassicASPHome.asp 页面上的 VBScript(服务器端):
<%
response.write("My first ASP script!")
set co = Server.CreateObject("ClassicASPCOM.ComplexObject")
co.Message = "Messi"
co.Number = 100
Dim ccom
Set ccom = Server.CreateObject("ClassicASPCOM.ClassCOM")
response.Write(ccom.GetMessage("1234567890"))
'---------------工作正常,直到这里
Dim ret
' ---------------以下语句抛出错误
ret = ccom.PaymentDetails(co)
response.Write("Fine")
代码片段(C#):
// C# Code (ClassicASPCOM.dll) built with Strong Name and Registered for COM Interop:
// Executed the following in Visual Studio Command Prompt in bin\Release folder
// Regasm ClassicASPCOM.dll
// Regasm ClassicASPCOM.dll /codebase
// Regasm ClassicASPCOM.dll /tlb
// gacutil/i ClassicASPCOM.dll
using System;
using System.Runtime.InteropServices;
namespace ClassicASPCOM
{
[ComVisibleAttribute(true)]
[Guid("D355BC25-B85F-4476-8D38-582F92F7B6F4")]
public interface IComplexObject
{
[DispId(2221)]
int Number {get; set;}
[DispId(2222)]
string Message { get; set; }
[DispId(2223)]
DateTime Dtime { get; set; }
}
[ComVisibleAttribute(true)]
[Guid("4E602191-8D09-458E-A0D0-A0A267696F78"),
ClassInterface(ClassInterfaceType.None)]
public class ComplexObject : IComplexObject
{
int Nmbr;
public int Number
{
get
{
return Nmbr;
}
set
{
Nmbr = value;
}
}
string Msg;
public string Message
{
get
{
return Msg;
}
set
{
Msg = value;
}
}
DateTime Dt;
public DateTime Dtime
{
get
{
return Dt;
}
set
{
Dt = value;
}
}
}
[ComVisibleAttribute(true)]
[Guid("4042FE79-8ACA-4E5D-9F14-2FF7C6AE8D88")]
public interface IGetMessage
{
[DispId(2224)]
string GetMessage(string Message);
[DispId(2225)]
string PaymentDetails(ComplexObject cObject);
}
[ComVisibleAttribute(true)]
[Guid("9A133858-5893-4CA7-9048-345CD0FCF535"),
ClassInterface(ClassInterfaceType.None)]
public class ClassCOM : IGetMessage
{
public string GetMessage(string Message)
{
return "Your Message: " + Message;
}
public string PaymentDetails(ComplexObject cObject)
{
return " Message: " + cObject.Message + " Number: " + cObject.Number;
}
}
}
谢谢