Domanda

OK, questo comincia a farmi impazzire.Ho una webapp asp.net.Abbastanza semplice, la maggior parte del codice in .aspx.vb e alcune classi in App_Code.

Il problema, che ha cominciato a verificarsi solo oggi (anche se la maggior parte del codice era già scritto), è che ogni tanto ricevo questo messaggio di errore:

Errore BC30002:Il tipo "XXX" non è definito

L'errore si verifica ogni volta che modifico i file nella cartella App_Code.MODIFICARE :OK, questo succede anche se non tocco nulla per un po' e poi aggiorno la pagina.Sto ancora cercando di capire esattamente come attivare questo errore.

Devo solo aspettare un po' senza toccare nulla, poi aggiornare la pagina e funziona, ma è molto fastidioso.

Quindi ho cercato un po', ma non è venuto fuori nulla, tranne le importazioni mancanti.Qualche idea ?

È stato utile?

Soluzione 2

Penso di aver trovato il problema.

Il mio codice era così:

Imports CMS

Sub Whatever()
    Dim a as new Arbo.MyObject() ' Arbo is a namespace inside CMS
    Dim b as new Util.MyOtherObject() ' Util is a namespace inside Util
End Sub

Non sono sicuro del motivo per cui l'ho scritto in questo modo, ma risulta che il fatto che stavo chiamando le classi senza chiamare l'intero spazio dei nomi o importare l'intero spazio dei nomi stava attivando l'errore.

L'ho riscritto così:

Imports CMS.Arbo
Imports CMS.Util 

Sub Whatever()
    Dim a as new MyObject()
    Dim b as new MyOtherObject()
End Sub

E ora funziona...

Altri suggerimenti

Sembra un problema di precompilazione, in particolare perché dici che ricevi l'errore e poi aspetti e scompare.ASP.NET potrebbe essere ancora in fase di compilazione dinamica dell'applicazione oppure ha compilato i tipi in assembly diversi.

Con la compilazione dinamica, non è garantito che vengano compilati file codebehind diversi nello stesso assembly.Pertanto il tipo a cui fai riferimento potrebbe non essere in grado di essere risolto all'interno del suo assembly precompilato.

Prova a utilizzare la direttiva "@Reference" per indicare al runtime che la tua pagina e il file che contiene il tuo tipo devono essere compilati nello stesso assembly.

@ Riferimento - MSDN

Questo mi è successo dopo aver aggiunto un nuovo progetto a una vecchia soluzione.Ho abbassato il framework Target per adattarlo a quello degli altri progetti "più vecchi" e l'errore è scomparso.

Sembra che accada ogni volta che il sito Web si avvia (l'app viene riciclata ogni volta che tocchi app_code e probabilmente hai IIS configurato per chiudere il sito Web dopo X minuti di inattività).

Scommetto che ha qualcosa a che fare con il processo di lavoro asp.net che non dispone dei diritti di accesso corretti sul server.Quindi sta tentando di caricare un assembly e gli viene negato.

Controlla questo collegamento e la Tabella 19.3 per un elenco di tutte le cartelle a cui l'account del processo di lavoro deve avere accesso per poter funzionare.E non dimenticare di concedergli i diritti su tutti i file e le cartelle nella tua directory virtuale!

Sostituisci prima i file vbproj e vbproj.user dal backup se i riferimenti sono uguali

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top