Utilizzare un assembly .NET da una pagina ASP classica
-
28-09-2019 - |
Domanda
Ho un vecchio sito Web .net 2005 che ha alcune pagine ASP e ho problemi con i riferimenti agli oggetti durante l'accesso alla dll .net.L'attività di manutenzione mi è stata affidata e lo sviluppatore originale non si trova da nessuna parte :( Ho già iniziato con .Net, quindi non sono davvero padrone della gestione di questo tipo di problema dll infernale.
Sulla freccia in basso è dove sto corteggiando il "(0x80131500) Il riferimento all'oggetto non è impostato su un'istanza di un oggetto."
Set objCommon = Server.CreateObject("Wrapper.CommonFunctions")
Dim machineBuilding
--->>> If objCommon.IsMachineAccount(strLogin, machineBuilding) Then
Ho già seguito questi passaggi:
- regasm /tbl /codebase mycomdll.dll
- gacutil /i mycomdll.dll
- copiare mycomdll.dll nella directory System32
- Dalla console eseguire issreset
- Se la tua dll è stata creata nel framework 2.0, crea un file "dllhost.exe.config" nella directory system32 e inserisci questo:
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727"/>
<requiredRuntime version="v2.0.50727"/>
</startup>
</configuration>
6.- Riavviare IIS con il comando issreset
e anche questi:
- In Proprietà del progetto a.In \application\assembly information io.Selezionare "Rendi l'assieme com-visibile".B.In fase di costruzione io.Seleziona "Registrati per Com Interop"
- NON firmarlo.
- Assicurati che IUSR disponga delle autorizzazioni complete per il file.
- Riavviare IIS tramite iisreset per svuotare eventuali cache.
E ancora non riesce a eseguire l'applicazione.Altre idee su cosa controllare o fare?Grazie!
Emiro
Soluzione 3
Il problema è stato l'applicazione è alla ricerca di un file che contiene il nome host del database.
Altri suggerimenti
Il valore HRESULT è molto rilevante.Tieni presente che il "codice struttura" in 0x80131500, 13 indica che l'origine dell'errore è il codice gestito.Hai già ricevuto la traduzione amichevole per 1500.
In altre parole, il codice gestito ha generato un'eccezione e non è stato gestito.Ovviamente non è raro, il codice gestito genera molto comunemente eccezioni.Soprattutto NullReferenceException, quello che hai attivato.Il debug di questo non è così semplice poiché si esegue codice gestito in un processo non gestito.Non sono sicuro di quale sia la procedura corretta per IIS, normalmente viene eseguita con Strumenti + Collega a processo.Il modo migliore per affrontare questo problema è isolare il codice, scrivere alcuni test unitari.
A parte questo, la variabile MachineBuilding mi sembra un buon candidato per NRE.Non l'hai inizializzato.
A proposito:non ha nulla a che fare con la registrazione.Ciò produce un tipo di errore molto diverso.
Ho avuto una soluzione simile al tuo, ma è andato lungo. Ho ancora un po 'di informazioni su di esso comunque e ho notato che la mia affermazione regasm è diverso.
regasm mycomdll.dll /tlb :mycomdll.tlb
Il tuo riferimenti tbl invece di TLB -? Forse è il problema
Ho anche che si dovrebbe controllare due volte i valori dei parametri e quindi chiamare il metodo con quei valori dei parametri tramite un client rapido-and-dirty .NET per vedere se il metodo genera un errore.
Voglio anche confermare che il mio codice ASP classico abbinato tuo ...
set obj = server.CreateObject("mycomdll.myclass")
...
call obj.method(false)
...
myvar = obj.method2(param1, param2, param3)