2010-03-05 3 views
2

J'essaie d'y parvenir mais cela ne fonctionne pas. Je suis sûr qu'il me manque quelque chose, s'il vous plaît aidez-moi où je me trompe. J'espère que c'est réalisable. Nous devrions pouvoir passer une chaîne de ASP Page (en utilisant vbscript) à C# dll (avoir cette DLL stockée dans gac et je l'ai déjà enregistré en utilisant l'utilitaire regasm).Transmettre la chaîne depuis la page ASP (en utilisant vbscript) vers la fonction DLL C# en tant que paramètre d'entrée

Ci-dessous mon code:

Function GetObj() 
Set Obj = Server.CreateObject("namespace.classname") 

Set inputStr = Nothing 
inputStr = "myString" 

Set GetObj = Obj.dotnetMethod(inputStr) 
SET Obj = NOTHING 
End Function 

Le problème que je suis face est que quand je passs inputStr au obj.dotnetMethod, il ne reconnaît pas la chaîne que je passe de la page asp et ne me retourne aucun résultat qu'il devrait.

+0

Peut-être pourriez-vous nous dire quel est le problème? "Ça ne marche pas" est une très mauvaise description. –

+0

Que voulez-vous dire, "il ne reconnaît pas la chaîne?" Savez-vous même si cela appelle votre méthode? –

+0

Oui, je suis sûr qu'il appelle les méthodes .net dll dans la page ASP. La raison pour laquelle je dis cela que j'ai 2 méthodes. En premier lieu, je ne dois pas passer une valeur de chaîne, cette méthode fonctionne très bien. Mais dans cette méthode, je dois passer une chaîne de la page ASP, et cette méthode ne fonctionne pas et j'obtiens le message d'erreur "Mauvais nombre d'arguments ou affectation de propriété invalide" ... – flopdix

Répondre

0

Peut être un problème Unicode--.Net attend des chaînes Unicode. ASP, je crois, ne le fait pas.

Mais si vous n'êtes même pas sûr que la méthode est enregistrée, eh bien, vous devez vous assurer que dll est COM visible. ASP est un monde qui ne sait rien sur le code managé ou .Net. Vous devez utiliser COM. Vous savez, old school regsvr32, ou ASP ne le trouvera pas.

+0

J'ai déjà défini ComVisible = true dans ma DLL .Net. Pour cette raison, ASP est capable d'appeler la méthode en utilisant l'objet .net dll – flopdix

+0

Toute aide? S'il vous plaît laissez-moi knwo, je suis coincé. – flopdix

+0

Non, les chaînes dans ASP/VBScript sont Unicode (c'est-à-dire les UTF-16 2 octets par points de code de caractères) les mêmes que les chaînes .NET. – AnthonyWJones

0

Je peux deviner quelques choses que le pourrait aller mal (votre question a vraiment besoin plus de détails)

Set GetObj = Obj.dotnetMethod(inputStr) 
  • dotnetMethod retourne un String, DateTime ou un type primitif tel Int32 auquel cas vous devrait supprimer le mot-clé Set.
  • dotnetMethod renvoie un objet qui n'est pas ComVisible lui-même.

BTW,

Set inputStr = Nothing 
inputStr = "myString" 

Pourquoi mettre inputStr à rien et puis attribuez-lui une chaîne à elle ??

Questions connexes