2009-08-31 4 views
6

Ho bisogno di creare un oggetto com per il mio asp classico, poiché posso creare un .net Assembly e farlo 'Interop' con com, quindi ho proceduto per creare un assembly .NET come questo: -COM Interop (come passare un array al com) tramite ASP classico

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; 
    } 


} 
} 

successivo ho fatto la solita, costruire, corse: gacutil & RegAsm

e nella mia pagina ASP classico ho avuto questo: -

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

e ottengo l'errore:

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

Ma se modifico l'assemblea di non usare un array, tutto solo lavoro, posso anche inviare stringa normale o int da e per l'assemblea a ASP classico. Ho letto tante cose, ma ottengo lo stesso errore,

Qualcuno ha provato questo prima e ha avuto successo, si prega di condividere la vostra soluzione

grazie

risposta

9

ASP in grado di gestire solo le matrici che sono variante, piuttosto che matrici di stringhe o intarsi. Quindi provare a utilizzare un oggetto, invece, ad esempio,

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

grazie mille per la risposta ... non vedo l'ora try..will aggiornarvi sullo stato – visual

+0

OrbMan, grazie, hai risolto il mio problema, vorrei poter trattare tu per pranzo. – visual

+0

Nessun problema, felice di aiutare. – RedFilter