2009-08-31 9 views
6

Ich muss ein com-Objekt für meine klassische Asp erstellen, da ich eine .net Assembly erstellen kann und es "Interop" mit com, so dass ich fortgefahren binCOM Interop (wie ein Array an die com übergeben) über klassische ASP

using System; 
using System.Collections.Generic; 
using System.Runtime.InteropServices; 
using System.Linq; 
using System.Text; 
using System.Data.SqlClient; 
using System.Data; 
using System.Configuration; 
using System.Web; 


namespace LMS 
{ 

[ComVisible(true)] 
public class Calc 
{ 

    public int Add(int val1, int val2, out string[] outputz) 
    { 
     int total = val1 + val2; 
     outputz = new string[5]; 
     outputz[1] = "test2"; 
     outputz[2] = "test3"; 
     outputz[3] = "test4"; 
     outputz[4] = "test5"; 
     return total; 
    } 


} 
} 

Next i die übliche tat, bauen, lief: gacutil & RegAsm

und in meinem klassischen asp-Seite dieses ich hatte: - -: eine .net Assembly wie diese erstellen

Dim params 
dim objPassport3 
set objPassport3 = Server.CreateObject("LMS.Calc") 
comTest2 = objPassport3.Add(1,1,params) 

und Ich bekomme Fehler:

Error Type: Microsoft VBScript runtime (0x800A0005) Invalid procedure call or argument: 'Add' /eduservice/test.asp, line 25

Aber wenn ich die Montage ändern nicht um ein Array zu verwenden, es ist alles nur arbeiten, ich kann sogar normale String oder int zu und von der Montage zu klassischen Asp senden. ich lese so viele Dinge, aber ich bekomme den gleichen Fehler,

jemand versucht, dies vor und war erfolgreich, gehen Sie bitte Ihre Lösung

dank

Antwort

9

ASP nur Arrays, die Variante sind verarbeiten kann teilen, anstatt Arrays von Strings oder Ints. Also versuchen Sie stattdessen ein Objekt unter Verwendung, zum Beispiel

public int Add(int val1, int val2, out object outputz) 
{ 
    int total = val1 + val2; 
    outputz = new object[5] 
     { 
      "test1", 
      "test2", 
      "test3", 
      "test4", 
      "test5" 
     }; 

    return total; 
} 
+0

Vielen Dank für die Antwort ... kann es kaum erwarten zu try..will Sie über den Status aktualisieren – visual

+0

OrbMan, danke, du mein Problem gelöst, ich wünsche, behandeln könnte du zum Mittagessen. – visual

+0

Keine Probs, froh zu helfen. – RedFilter