嗨經典ASP的專家,經典ASP C#COM Microsoft VBScript運行時錯誤
基本上,我是新來的經典ASP和VBScript,並得到了這個「VBScript運行時錯誤:無效的過程調用或參數」,而試圖通過COM方法的一個複雜類型的參數(見下面的截圖)。在創建服務器對象並將字符串傳遞給COM方法時,任何嘗試傳遞複雜類型的參數都是徒勞的。
請幫忙。
這裏的代碼片段:
的VBScript ClassicASPHome.asp頁面上(服務器端):
<%
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;
}
}
}
感謝
出於好奇,你爲什麼要使用.NET組件來自ASP3。爲什麼不直接使用ASP.NET,或者這是一種自虐的學習練習? (在這種情況下,我建議使用C或C++編寫COM組件,以避免CLR編組出現問題)。 – Dai 2013-03-27 15:00:55
'bar'從哪裏來? – 2013-03-27 17:18:23
複雜對象沒有實現IComplexObject會讓你感到奇怪嗎?我們假設你將IComplexObject設置爲ComplexObject的dispinterface。 – 2013-03-27 17:53:15