2009-02-04 25 views
5

Actualmente estoy trabajando con un proyecto de sitio web ASP.NET en Visual Studio 2008 y cada vez que hago un cambio al código detrás de la página para un usuario el control y navegar a la página que está utilizando el riguroso control del usuario sale el siguiente error:No se puede convertir el objeto de tipo 'X' a 'X' - ASP.NET

Unable to cast object of type 'ASP.basepage_master' to type 'ASP.basepage_master'.

tengo que reconstruir todo mi solución a fin de resolver este error. ¿Alguien más ha experimentado este error y sabe cómo resolverlo?

Respuesta

0

Si detengo y reinicio IIS en mi estación de trabajo local, puedo resolver este problema.

2

Eso tiene sentido, por lo que entiendo.

Estás realizando un cambio en el código subyacente. Para que esos cambios surtan efecto, deberá compilar ese proyecto para que el código subyacente pueda compilarse en el archivo DLL para ese proyecto. Cuando cambia el código subyacente y no crea el proyecto, esencialmente tiene dos versiones de esa página, y ASP.Net no puede resolver las dos versiones. Entonces, cuando compila la clase, los cambios se reconcilian en la DLL.

+0

estoy usando el modelo de proyecto de sitio web, no es el modelo de proyecto de aplicación Web en Visual Studio. –

+0

Todavía creo que el concepto es el mismo, aparte del edificio a un archivo dll. ASP.NET aún necesita compilar sus archivos fuente, y está usando su versión en caché para ejecutar su sitio, no su versión "operativa" que no está compilada. http://www.odetocode.com/Articles/417.aspx – Carl

8

Eliminar los archivos temporales de ASP.NET (todo en C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Archivos ASP.NET temporales) hace que esto desaparezca ... por un tiempo.

+0

Debo detener IIS para eliminar los archivos temporales de ASP.NET, lo que resuelve este error. –

+2

Impresionante. Me alegro de que funcionó. (* tos * ¿Puedo obtener un voto positivo? * tos *) – teedyay

-1

Eurekaaa !! Lo tengo ... Este funciona ...

Cuando grag drop the usercontrol o lo carga a través del método LoadControl use una 'tilde' en su ruta. P.ej. this.LoadControl("~/MyUserControl.ascx");

Lo mismo se aplica para un control caído en una página. Agregue la tilde a la ruta declarativa del control de usuario en la página aspx.

Podemos llamar a esto como un error en VS2005 y se fija en VS 2008.

Responder mí si este trabajo dosen't o necesita más explicación. Alternativamente, no olvide marcar esto como respuesta.

Cuestiones relacionadas