2011-01-10 27 views
6

Sto cercando di eseguire le pagine ASP classiche su una casella Windows 2008 64 bit R2.ASP classico: C0000005 Errore durante l'esecuzione

Inizialmente il problema era con la registrazione delle DLL: ora è stato risolto. Register DLL file on Windows Server 2008 R2

Ora quando provo ad accedere alla pagina ottengo questo errore

Active Server Pages errore 'ASP 0241'

CreateObject Eccezione

index.asp

Il CreateObject di '(null)' ha causato l'eccezione C0000005.

Server Errore oggetto '0177 ASP: c0000005'

Quando cambio il codice server.CreateObject a CreateObject .. io alla fine con questo errore

errore Active Server Pages 'ASP 0115 'Errore imprevisto index.asp

Si è verificato un errore intercettabile (C0000005) in un oggetto esterno. Lo script non può continuare a funzionare.

ho controllato tutto quello che potevo - Accesso e diritti di amministratore, ecc Il pool di applicazioni sono impostate su No modo Codice + Classic gestito.

Qualche idea per risolvere questo problema?

+1

Che oggetto stai creando? – bzlm

+0

Qual è l'oggetto che stai tentando di creare? – Sparky

+0

È un oggetto personalizzato. Recupera alcune cose da db. Ho registrato la DLL. Nessun codice sorgente tho. –

risposta

2

Non hai intenzione di risolvere questo problema in ASP. Il C0000005 è l'eccezione di violazione di accesso. Ciò si verifica quando il codice tenta di leggere la memoria che non ha allocato.

La DLL sta facendo qualcosa di male quando carica o durante la costruzione dell'oggetto.

Avete testato la DLL con un semplice file .vbs?

+1

se avete intenzione di provare questo da VBS, assicurarsi di utilizzare il vbscript.exe che corrisponde al 'bitness' della DLL ISAPI ASP. – Mark

+0

Questo è davvero interessante. Ho creato un file vbs online con il solo scopo di creare un oggetto. Quando eseguo dalla mia stessa directory ho ricevuto questo errore "(null): 0x800700C1" Quando ho copiato la dll e il file vbs in c: \ windows \ syswow64 \ ed eseguito il file .. Ottengo questo errore "Console Microsoft basi host di script ha smesso di funzionare " Da eventvwr " firma problema: P1: cscript.exe P2: 5.8.7600.16385 P3: 4a5bc670 P4: StackHash_0a9e P5: 0.0.0.0 P6: 00000000 P7: 02ca0068 P8: c0000005 P9: 00000008 P10: " –

+0

@Broken Link: A meno che non si usi specificamente [c | w] script.exe nella cartella syswow64, si sarebbe stati eseguiti la versione a 64 bit ma la tua DLL sarà a 32 bit. L'errore C1 (che è ERROR_BAD_EXE_FORMAT) probabilmente si lamenta di ciò. Quando si esegue la versione a 32 bit di cscript si vede lo stesso errore che si ottiene in ASP. Questo conferma che la tua DLL è al verde e ha bisogno di essere aggiustata. – AnthonyWJones

-2

Si potrebbe voler controllare questo blog, dal titolo "Classic ASP (ASP 3.0) non funziona su 64 bit con gli oggetti 32bit COM" http://blogs.msdn.com/b/robgruen/archive/2005/05/26/422328.aspx

E 'un po' datato e l'autore si riferisce in modo non corretto per l'ASP gestore come filtro ISAPI (è un'estensione, non un filtro), ma altrimenti l'informazione sembra buona.

se il gestore di asp viene compilato solo a 64 bit, non sarà possibile caricare un oggetto COM a 32 bit in esso, qualunque cosa tu faccia.

l'autore fa menzione di una soluzione COM +. Ho la sensazione che un pacchetto COM + a 32 bit di processo possa caricare questo oggetto COM a 32 bit e che la pagina ASP possa effettuare chiamate cross-process a questo pacchetto COM +.

buona fortuna, Mark

1

Ho avuto esattamente lo stesso errore.

Nel mio caso l'errore C0000005 è stato causato da una dipendenza mancante.

ProcessMonitor mi aiuta a trovarlo. (Filtra per processo e seleziona "Nome non trovato") Name not found on dll

La copia del file necessario nel posto giusto ha risolto il mio problema. (Nel mio caso VB6FR.dll era una dipendenza necessaria per vb6 in francese.)

0

Ho trascorso parecchie ore a inseguirlo.

Nel mio caso, è stato causato riutilizzando un oggetto recordset più volte senza chiuderlo tra le chiamate DB. Il codice funzionava senza problemi apparenti in molti casi simili, e uno di questi ha semplicemente smesso di tollerare il processo.

L'errore si è verificato quando ho tentato di chiudere il recordset alla fine della pagina, il che ha reso la risoluzione dei problemi più difficile.

Ho pulito il codice, assicurandomi che il recordset fosse chiuso tra le chiamate e questo ha risolto il problema.

0

Per la mia esperienza, si sta utilizzando AVG Free e, dopo un aggiornamento, si è verificato questo tipo di errore.

0

Si è incappato in questo stesso errore durante il tentativo di utilizzare il mio controllo COM e nel mio caso si è verificato che la mia DLL è stata compilata in modalità di debug.

Ci sono due modi per evitare che:

  1. eseguire IIS in modalità di debug. Per 32 bit si utilizza la seguente riga: C: \ Windows \ SysWOW64 \ inetsrv> w3wp.exe -debug

    Si noti che è necessario interrompere il servizio IIS e per 64 bit si utilizza quello in System32.

  2. compilare una versione di rilascio :)

0

ho avuto lo stesso errore durante il caricamento dei dati del file csv più di una volta. Passo 1: creare innanzitutto una tabella temporanea per trasferire i dati csv nella tabella temporanea, quindi passare alla tabella principale ed eliminare la tabella temporanea una volta spostati i dati. Questo deve essere fatto a livello di programmazione.

Passaggio 2 - Passare a mysql e selezionare il database e utilizzare questa query (MOSTRA ELENCO PROCESSI COMPLETI;) utilizzare senza parentesi. questo mostrerà lo stato degli oggetti in esecuzione. Se si trova un oggetto con stato di "Sospensione", questo deve essere cancellato prima del secondo tentativo di caricare il file. di solito il tempo di attesa predefinito è di circa 28000 secondi. È necessario ridurlo secondo i requisiti. Il codice per ridurre il tempo di attesa è (SET GLOBAL wait_timeout = 5;). Utilizzare senza bretelle. Usa questo è mysql. questo reimposterà il tuo tempo di attesa globale a 5 secondi, (cambia secondo le tue esigenze). Questo dovrebbe risolvere il tuo problema. Ti auguro il meglio.

Problemi correlati