Pregunta

Bien, esto empieza a volverme loco.Tengo una aplicación web asp.net.Bastante sencillo, la mayor parte del código en .aspx.vb y algunas clases en App_Code.

El problema, que comenzó a ocurrir recién hoy (aunque la mayor parte del código ya estaba escrito), es que de vez en cuando aparece este mensaje de error:

Error BC30002:El tipo 'XXX' no está definido

El error ocurre cada vez que modifico los archivos en la carpeta App_Code.EDITAR :Bien, esto también sucede si no toco nada durante 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 poquito sin tocar nada, luego refrescar la página y funciona, pero es muy molesto.

Así que busqué un poco, pero no apareció nada excepto que faltaban importaciones.Alguna idea ?

¿Fue útil?

Solución 2

Creo que encontré 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 a clases sin llamar a todo su espacio de nombres ni importar todo su espacio de nombres fue lo que provocó el error.

Lo 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...

Otros consejos

Suena como un problema previo a la compilación, particularmente porque mencionas que recibes el error y luego esperas y desaparece.Es posible que ASP.NET todavía esté en el proceso de compilar dinámicamente su aplicación o que haya compilado los tipos en diferentes ensamblados.

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

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

@ Referencia - MSDN

Esto me sucedió después de agregar un nuevo proyecto a una solución anterior.Bajé el marco de Target para que coincida con el de los otros proyectos "antiguos" y el error desapareció.

Parece que sucede cada vez que el sitio web se activa (la aplicación se recicla cada vez que tocas app_code y probablemente tengas IIS configurado para cerrar el sitio web después de X minutos de inactividad).

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

Mira este enlace 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 funcionar.¡Y no olvide otorgarle derechos sobre todos los archivos y carpetas en su directorio virtual!

Reemplace su archivo vbproj y vbproj.user de su copia de seguridad antes si las referencias son iguales

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top