2009-08-31 7 views
6

Je dois créer un objet com pour mon asp classique, puisque je peux créer un assemblage. NET et l'avoir 'Interop' avec com, alors j'ai procédé pour créer une Assemblée .net comme ceci: -COM Interop (comment passer un tableau à la com) via ASP classique

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


} 
} 

Ensuite je l'ai fait l'habitude, construire, a couru: gacutil & RegAsm

et dans ma page asp classique i eu ceci: -

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

et je reçois l'erreur:

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

Mais si je modifie l'ensemble de ne pas utiliser un tableau, tout juste travailler, je peux même envoyer la chaîne normale ou int à et de l'ensemble à asp classique. je l'ai lu tant de choses mais je reçois la même erreur,

quelqu'un a essayé cela avant et a réussi, s'il vous plaît faire partager votre solution

grâce

Répondre

9

ASP ne peut gérer des réseaux qui sont variante, plutôt que tableaux de chaînes ou d'ints. Donc, essayez d'utiliser un objet à la place, par exemple,

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

merci beaucoup pour la réponse ... ne peux pas attendre pour try..will vous mettre à jour sur l'état – visual

+0

OrbMan, merci, vous avez résolu mon problème, souhaite que je pourrais traiter vous pour le déjeuner. – visual

+0

Aucun problème, heureux d'aider. – RedFilter