2012-07-07 12 views
5

Ho creato una DLL in Visual Studios 2010. Ho eseguito i seguenti passaggi:DLL ASP e COM classica non funziona in Server 2008 R2 (errore di runtime Microsoft VBScript '800A01ad' componente ActiveX non può creare oggetti)

  1. accumulo Dato un nome forte associando una coppia di chiavi (file SNK) ad esso

  2. Dato ogni classe un ProgID individuale e GUID

  3. Dato che è un po 'DLL 64 ho fatto in modo che Usato il RegAsm.exe che si trova nel 'FrameWork64/v4xxxx 'cartella. Ho usato RegAsm.exe/codebase ECE2.dll

  4. correvo 'gacutil -i' sulla DLL

Tutti questi passaggi hanno avuto successo. La DLL e la pagina ASP che sto usando su sono memorizzate in intetpub/wwwroot.

Ora, la DLL funziona correttamente sul mio laptop e computer di casa (entrambi con Windows 7 Ultimate). Ora sto provando a farlo funzionare su Windows Server 2008 R2. Questo è dove sto avendo il problema.

Completamento degli stessi passaggi come sopra, che hanno tutti esito positivo. Tuttavia quando si esegue la pagina ASP, sto ricevendo un messaggio di errore che suggerisce che non è stato registrato, anche se ha:

errore di runtime di Microsoft VBScript

'800a01ad' componente ActiveX non può creare l'oggetto : 'ECE2.CSV_DataSet'

Ho pensato che potrebbe essere un'impostazione in IIS che deve essere modificata. Si noti che questo server è già configurato per consentire le pagine ASP classiche, quindi so che non è così. Qualcuno potrebbe darmi qualche indicazione sul fatto che ci sia una particolare impostazione che ho bisogno di cambiare in Server, o se ci sono dei cerchi di sicurezza extra che devo saltare per farlo funzionare su Server 2008 che non devo fare su Windows 7 Ultimate?

+1

Creare una directory di applicazione nel sito Web, inserire l'asp in esso, assicurarsi che la directory dell'applicazione sia in esecuzione come amministratore (non il solito utente di iis), può essere d'aiuto? - Potrebbe trattarsi di un problema di sicurezza – Paul

risposta

7

Verificare le impostazioni avanzate del pool di applicazioni in cui viene eseguita questa applicazione ASP. Ha "Abilita applicazione a 32 bit" impostato su Vero. Se è così allora questo è il tuo problema non è possibile creare un'istanza di una DLL a 64 bit in un pool di 32 bit.

C'è un motivo per cui si considera che si tratta di una "64 bit dll" invece di semplice "Qualsiasi CPU"? Se non regassate anche per l'uso come una DLL a 32 bit.

Altrimenti è necessario eseguire questa applicazione ASP senza "Abilita applicazione a 32 bit" in modo che venga eseguita a 64 bit, ma probabilmente c'è un motivo per cui questo è impostato in primo luogo. Quindi il prossimo passo è creare un nuovo pool di applicazioni che non abbia questa impostazione e fare in modo che una parte del tuo ASP venga eseguita come un'applicazione separata in questo pool.

+1

ho appena trascorso 3 ore cercando di capirlo. Che tu tanto per la tua risposta. Questa impostazione funzionava: consentiva a un sito legacy di eseguire ASP di classe con un componente ActiveX a 32 bit. – carrabino