Question

J'ai un vieux .net 2005 site web qui a un problème de référence pages asp et objet ayant accès .net dll. La tâche d'entretien a été remis à moi et le développeur original est introuvable :( J'ai commencé à .Net déjà, donc je ne vois vraiment pas la manipulation maître cet enfer dll genre de problème.

Sur la flèche ci-dessous où je suis le encourtering « (0x80131500) Référence d'objet non définie à une instance d'un objet. "

Set objCommon = Server.CreateObject("Wrapper.CommonFunctions")
  Dim machineBuilding
--->>>  If objCommon.IsMachineAccount(strLogin, machineBuilding) Then

Je l'ai déjà suivi ces étapes:

  1. regasm / TBL / codebase MyCOMDLL.dll
  2. gacutil / i MyCOMDLL.dll
  3. copier le MyCOMDLL.dll dans le répertoire System32
  4. A partir de la console, exécutez issreset
  5. Si votre dll est de créer dans le cadre 2.0 créer un fichier « dllhost.exe.config » dans le répertoire system32 et mettre ceci:

<?xml version="1.0"?> <configuration> <startup> <supportedRuntime version="v2.0.50727"/> <requiredRuntime version="v2.0.50727"/> </startup> </configuration>

6.- redémarrer IIS avec la commande issreset

et aussi ceux-ci:

  1. Dans les propriétés du projet une. Sous \ Application \ informations d'assemblage je. Cochez la case « Faire l'assemblage Com-visible ». b. sous la construction je. Cochez la case « Inscrivez-Com Interop »
  2. Ne signez pas.
  3. Assurez-vous que IUSR dispose des autorisations d'accès au fichier.
  4. Redémarrer IIS via iisreset pour vider les caches.

Et toujours pas réussi l'application en cours d'exécution. Plus d'idées que de vérifier ou de faire? Merci!

Emir

Était-ce utile?

La solution 3

Le problème a été l'application est à la recherche d'un fichier qui contient le nom d'hôte de base de données.

Autres conseils

La valeur HRESULT est très pertinente. Notez que le « code installation » dans 0x80131500, 13 indique la source d'erreur est le code managé. Vous avez déjà eu la traduction amicale pour 1500.

En d'autres termes, le code managé a lancé une exception et il n'a pas été traitée. Ce n'est pas rare bien sûr, le code managé lance très souvent des exceptions. Surtout NullReferenceException, celui que vous déclenchez. Ce n'est pas Débogage facile puisque vous exécutez le code managé dans un processus non géré. Pas tout à fait sûr de ce que la procédure appropriée est pour IIS, normalement il est fait avec des outils + ANNEXER au processus. La meilleure façon d'y parvenir est d'isoler le code, écrire des tests unitaires.

Autre que cela, la variable MACHINEBUILDING me semble un bon candidat pour NRE. Vous ne l'avez pas lsinitialisez.

BTW: il n'a rien à voir avec l'enregistrement. Cela produit un genre très différent de l'erreur.

J'ai eu une solution similaire à la vôtre, mais il est révolue depuis longtemps. J'ai encore quelques informations à ce sujet, cependant, et je remarque que ma déclaration regasm est différent.

regasm mycomdll.dll /tlb :mycomdll.tlb

Vôtre références TBL au lieu de TLB - peut-être que le problème est

Je pense aussi que vous devez bien vérifier les valeurs des paramètres et ensuite appeler la méthode avec les valeurs des paramètres via un client .NET rapide et sale pour voir si la méthode renvoie une erreur.

Je veux aussi confirmer que mon code ASP classique adapté à vous ...

set obj = server.CreateObject("mycomdll.myclass")
...
call obj.method(false)
...
myvar = obj.method2(param1, param2, param3)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top