2008-09-17 18 views
5

OK, esto me vuelve loco. Tengo una aplicación web asp.net. Bastante sencillo, la mayoría del código en .aspx.vb, y algunas clases en App_Code.Error BC30002 - Tipo XXX no está definido

El problema, que ha comenzado a ocurrir sólo hoy (a pesar de que la mayor parte del código ya fue escrito), es que de vez en cuando, tengo este mensaje de error: BC30002

de error: Tipo ' XXX 'no está definido

El error se produce cada vez que modifico los archivos en la carpeta App_Code. EDITAR: OK, esto sucede también si no toco nada por un tiempo y luego actualizo la página. Todavía estoy tratando de descubrir exactamente cómo desencadenar este error.

Solo tengo que esperar un poco sin tocar nada, luego actualizo la página y funciona, pero es muy molesto.

Así que busqué un poco, pero no salió nada, excepto las importaciones que faltan. Alguna idea ?

Respuesta

4

Creo que he encontrado el problema.

Mi código era así:

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 

No estoy seguro de por qué lo escribí así, pero resulta que el hecho de que estaba llamando sin clases ya sea llamando a la totalidad de su espacio de nombres o la importación de todo su espacio de nombres estaba desencadenando el error.

Reescribí así:

Imports CMS.Arbo 
Imports CMS.Util 

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

Y ahora funciona ...

4

Suena como un problema de pre compilación, particularmente porque mencionas que recibes el error y luego esperas y desaparece. ASP.NET puede estar todavía en el proceso de compilación dinámica de su aplicación o ha compilado los tipos en diferentes conjuntos.

Con la compilación dinámica, no se garantiza que tenga diferentes archivos codebehind compilados en el mismo ensamblaje. Por lo tanto, es posible que el tipo al que hace referencia no se pueda resolver dentro de su ensamblado precompilado.

Intente utilizar la directiva "@Reference" para indicar al tiempo de ejecución que su página y el archivo que contiene su tipo deben compilarse en el mismo ensamblaje.

@ Reference - MSDN

0

Suena como ocurre cada vez que el sitio web hace girar hacia arriba (la aplicación se recicla cada vez que se toca App_Code y, probablemente, usted ha configurado IIS para cerrar el sitio web después de X minutos de inactividad).

Apuesto a que tiene algo que ver con el proceso de trabajo asp.net que no tiene los derechos de acceso correctos en el servidor. Entonces está tratando de cargar un ensamblado y se lo niega.

Check this link y la Tabla 19.3 para obtener una lista de todas las carpetas a las que la cuenta del proceso de trabajo debe tener acceso para poder funcionar. ¡Y no olvide darle derechos a todos los archivos y carpetas en su directorio virtual!

0

Esto me sucedió después de añadir un nuevo proyecto para una solución de edad.Bajé el marco de Target para que coincida con el de los otros proyectos 'anteriores' y el error desapareció.

Cuestiones relacionadas