"Mensaje de error del analizador: no se pudo cargar el tipo" en Global.asax

203

Estoy trabajando en un proyecto MVC3 y recibo el siguiente error:

Mensaje de error del analizador: no se pudo cargar el tipo 'GodsCreationTaxidermy.MvcApplication'.

Error de fuente:

Línea 1: <%@ Application Codebehind="Global.asax.cs" Inherits="GodsCreationTaxidermy.Core.MvcApplication" Language="C#" %>

El error que obtengo es que no se puede cargar GodsCreationTaxidermy.Core.MvcApplication, pero en esta captura de pantalla, la parte principal no se muestra en el error:

Captura de pantalla de la página de error

¿Alguien tiene alguna idea o una solución a este error?

PsychoCoder
fuente
8
¿Realmente tienes la clase GodsCreationTaxidermy.Core.MvcApplication en tu aplicación? Si no, cree lo mismo y compile el proyecto. Funcionará seguro.
Shailesh
44
Sí, tengo GodsCreationTaxidermy.Core.MvcApplication (Global.asax.cs)
PsychoCoder
El archivo Global.asax que parece usarse (de acuerdo con la captura de pantalla) tiene un aspecto diferente al que ha mostrado.
Darin Dimitrov
compruebe si la cadena Hereda es la misma que la ruta a la clase en su aplicación (espacio de nombres + nombre de ruta), es decir, ambas son GodsCreationTaxidermy.Core.MvcApplication
linkerro
Ese es uno de los problemas, Darin, no importa lo que haga, siempre deja fuera la parte principal
PsychoCoder

Respuestas:

175

Su servidor web local está ejecutando un código diferente al que realmente está trabajando. Asegúrese de haber dejado de depurar, detenga su servidor web local, limpie y reconstruya como Peter sugirió, verifique sus global.asax y global.asax.cs, e intente nuevamente.

Si esto no funciona y está utilizando IIS local, intente eliminar el sitio en el Administrador de IIS y volver a crearlo manualmente.

Facio Ratio
fuente
44
Muy extraño error de hecho. Implementé en IIS en el servidor y obtuve esto. Limpiado y recompilado también funcionó para mí.
Piotr Kula
2
Limpiar / reconstruir + recreó el directorio virtual, y luego funcionó.
fantastik78
44
Tuve el problema cuando tuve el mismo proyecto abierto en dos instancias de Visual Studio. Por lo tanto, tuve dos instancias de IIS Express ejecutándose. Tuve que cerrar uno y luego se resolvió.
lvmeijer
44
También puede intentar eliminar carpetas bin / obj en su proyecto.
arni
1
Seguí estas instrucciones y agregué algunas limpiezas / reconstrucciones adicionales, cambié los espacios en blanco en el archivo .asax, volví a formatear mis monitores, e hice una alegre plantilla acompañada por las tuberías de Pan y eso pareció funcionar.
MrBoJangles el
207

Compruebe que la ruta de salida del proyecto (propiedades / construcción del proyecto) se establece en biny no bin\Release obin\Debug

Por alguna razón, IIS (VS Development Server o Local IIS) siempre accede a las bibliotecas desde el bindirectorio (y no buscará subdirectorios)

Vincent de Lagabbe
fuente
27
Crédito donde es debido. Solucioné mi problema, mi aplicación estaba configurada para usar bin \ Debug, cambiándola a bin la resolvió. Muchas gracias.
Joey Bob
Fue interesante saber que los proyectos ASP.NET no utilizan la ruta de salida predeterminada bin / $ (Configuración) /. Muchas gracias por la respuesta!
Jaanus Varus
2
@JamesPusateri: sin embargo, ten cuidado. Cada vez que inicie, usará lo que hay en / bin. Entonces, probablemente el resultado de esta compilación que hiciste después de cambiarlo.
Vincent de Lagabbe
1
Wow, en 2018 IIS todavía funciona de esta manera. Malo, muy malo para Microsoft. ¡Gracias!
Rodrigo T.
1
nada ha cambiado durante casi 7 años, el consejo todavía ayuda
Yuriy Vikulov
33

Intente modificar su archivo global.asax (simplemente agregue un espacio en algún lugar) y vuelva a ejecutarlo. esto forzará al servidor web incorporado a actualizar y recompilar el archivo global.asax.

También haga una limpieza y reconstrucción: debería solucionar el problema

Peter Munnings
fuente
44
La modificación de global.asax no hizo nada por mí, pero una limpieza y reconstrucción solucionó el problema :)
NightShovel
Tuve este problema cuando me quedé sin energía. Limpiar y reconstruir ayudó. ¡Gracias!
Gorgi Rankovski
Limpieza fallida. Construcción fallida. No tuve problemas con mi ruta de compilación. Esto, sin embargo, hizo el truco. ¡Gracias!
egandalf
Gracias por su respuesta Sr. Munnings
dada
30

Esto sucede a veces si cambia la información del espacio de nombres (proyecto o nivel de clase) después de que global.asaxse genera el.

Haga clic derecho en el Global.asax archivo y seleccione "Abrir con" y luego seleccione "Editor de XML (texto) con codificación" (otros editores también pueden funcionar, pero esto es lo que uso).

Luego edite la sección "Hereda" en la directiva XML

<% @ Application Codebehind = "Global.asax.cs" Inherits = "GodsCreationTaxidermy.MvcApplication" Language = "C #"%>)

para que coincida con el nombre completo real de su clase de aplicación. Y eso es.

Otra opción es copiar todo el código de Global.asax.cs y luego eliminar y crear otro archivo Global.asax (y luego copiar el código nuevamente en Global.asax.cs).

Paul Easter
fuente
Esto funcionó para mí también. Había cambiado el espacio de nombres para el ensamblaje para todos los proyectos en la solución. Así que tuve que editar el Global.asaxarchivo como se indica en esta respuesta, y hacer que coincida con lo que está en la configuración del Proyecto.
Shiva
21

Cerré y volví a abrir Visual Studio y funcionó.

Gagan
fuente
44
cerrar TODO tu estudio visual
Jboy Flaga
11
Primero, todos deberíamos intentar salir del auto, cerrar todas las puertas y luego volver a entrar.
pijamas
no, tienes que cerrar las puertas de TODOS tus autos, al mismo tiempo.
BlackICE
17

Tuve que ir a CONSTRUIR -> ADMINISTRADOR DE CONFIGURACIÓN y - ejem - marcar la casilla junto a mi proyecto para asegurarme de que realmente se construye.

Ron Newcomb
fuente
2
No entiendo el voto negativo. Potencialmente, esto podría haber sido una solución. Esto es realmente más relevante de lo que la mayoría piensa ... Si no está marcado, no siempre es la ubicación más obvia. Especialmente cuando hay varias configuraciones.
Anthony Mason
¡Me gusta tu respuesta y tu razonamiento!
UKM
1
Este también fue mi problema, y ​​no tengo idea de cómo los proyectos se deseleccionaron de la configuración.
Septiembre
5

Tuve este problema hoy, y me llevó un tiempo encontrar la causa.

Básicamente, mi proyecto principal VS2015 incluía un subproyecto que se había creado utilizando una versión superior de .Net Framework.

Curiosamente, cuando tiene este problema, VS2015 informará con gusto que la solución se ha desarrollado correctamente, pero cuando intenta ejecutar el sitio web, solo le da ese error engañoso, lo que sugiere que su Global.asax.csarchivo está mal.

Entonces, si ve este error, y Limpieza / Reconstrucción no ayuda, abra el Referencesárbol de su Proyecto y verifique si hay signos de exclamación.

ingrese la descripción de la imagen aquí

Además, revise su Outputventana para ver mensajes como este:

The primary reference "C:\Projects\Business Objects 4\bin\Release\BusinessObjects.dll" 
could not be resolved because it was built against 
the ".NETFramework,Version=v4.5" framework. 
This is a higher version than the currently targeted framework
".NETFramework,Version=v4.0".

La solución, por supuesto, es hacer clic derecho en su proyecto principal, seleccionar la pestaña superior, "Aplicación", y cambiar la versión de Target Framework a una versión superior que coincida con su subproyecto.

Es molesto que Visual Studio 2015 le permita compilar y ejecutar completamente soluciones que silenciosamente contienen este problema. ¡Está pidiendo problemas ...!

Mike Gledhill
fuente
2

También puede verificar las propiedades de su sitio en IIS. (En IIS, haga clic con el botón derecho en el sitio y elija Propiedades). Asegúrese de que la configuración de Ruta física apunte a la ruta correcta para su aplicación, no para otra aplicación. (Eso solucionó este error para mí).

Rob Cole
fuente
2

Acabo de encontrar esto en una aplicación MVC5 y nada funcionaba para mí. Esto sucedió justo después de haber intentado hacer una reversión de SVN a una versión anterior del proyecto.

Tuve que eliminar global.asax.cs y luego agregué uno nuevo haciendo clic derecho en Proyecto -> Agregar nuevo elemento -> Global.asax y ESO finalmente lo arregló.

Solo pensé que podría ayudar a alguien.

iAteABug_And_iLiked_it
fuente
Si eso lo soluciona para usted, probablemente haya algo desordenado sobre la propiedad "Crear acción" del global.asax.csarchivo existente . Debe establecerse en "Compilar". La acción de compilación del global.asaxarchivo en sí debe establecerse en "Contenido".
Steven Liekens
Hice exactamente lo que @iAteABug_And_iLiked_it hizo, ¡y el problema se resolvió!
zinczinc
2

Tengo que informar que probé al menos 4 sugerencias de esta publicación. Ninguno de ellos funcionó. Sin embargo, me complace informar que me recuperé recuperándome de la copia de seguridad. Solo tuve que actualizar mis últimos cambios de código desde el archivo de registro. Tomó menos de 10 minutos. Pasé 3 veces eso leyendo esta publicación y probando otras sugerencias. Lo siento.

Fue un error muy extraño. Buena suerte a cualquiera que se encuentre con este gremlin.

htm11h
fuente
2

Tengo el mismo problema cuando tengo 2 instancias de Visual Studio ejecutando el mismo proyecto. Así que cerré Visual Studio y abrí solo una instancia y ¡funciona bien ahora!

Seyed Morteza Mousavi
fuente
2

Estaba trabajando en un proyecto web ASP.NET antiguo 'basado en carpetas' (que odio), y descubrí que esta es mi solución:

Crea una App_Codecarpeta (si aún no tienes una)

Mueve el Global.asax.vbarchivo a la App_Codecarpeta

El marcado en Global.asax puede omitir cualquier espacio de nombres (al menos, para este estilo de proyecto, afaik):

<%@ Application Codebehind="Global.asax.vb" Inherits="MyApp" Language="VB" %>

... donde "MyApp" es el nombre de la clase que se define en Global.asax.vb

bkwdesign
fuente
2

"CONSTRUIR -> GERENTE DE CONFIGURACIÓN y - ejem - marque la casilla junto a mi proyecto para asegurarse de que realmente se construya". Eso e ir a la carpeta del proyecto en el explorador de Windows, presionar las opciones y desmarcar la casilla de verificación "Solo lectura" ayudó.

Desastre
fuente
Simplemente funcionó para mí. El proyecto no tiene una opción integrada habilitada No sé por qué, pero esta solución era lo que necesitaba, gracias.
willyMon
1

Vaciar la carpeta bin. Cree todas las bibliotecas de clases dependientes y refiéralas en el proyecto principal, y cree la solución completa.

Fuente

Vignesh Subramanian
fuente
1

Yo también enfrenté el mismo problema. A pesar de seguir cada respuesta, no funcionó. Luego cambié "Inherits = namespace.class " a "Inherits = nombre de ensamblaje totalmente calificado ", es decir, "Inherits = namespace.class, assenamename, Version =, Culture =, PublicKeyToken = " Espero que ayude.

Mahesh
fuente
1

Esto también puede suceder si accidentalmente olvida configurar su solución VS en "Proyectos de inicio múltiple" si está ejecutando un Web y un WebApi desde la misma solución.

Puede verificar esto haciendo clic derecho en Solución en el Explorador de soluciones y seleccione 'Propiedades ". Luego busque' Proyectos de inicio '.

Dave Black
fuente
El mío era similar a esto: estaba ejecutando el proyecto API incorrecto en la solución. En realidad, tuve un error de compilación en la API que pensé que estaba ejecutando, pero VS no lo detectó cuando ejecuté la solución, incluso después de una limpieza.
John
1

Elimine el .vsdirectorio de la raíz de la solución. Limpiar. Reconstruir.

Este problema me vuelve loco de vez en cuando e inevitablemente termino aquí buscando respuestas. Sospecho que hay varias causas que pueden producir esta excepción, esto alguna vez me funciona.

Patrick Borkowicz
fuente
Varias horas de probar otras mil sugerencias y esta fue la que lo hizo por mí. Mi aplicación funcionaba bien en Visual Studio, tanto en configuraciones de depuración como de lanzamiento, pero una vez publicada en IIS recibía el error. Eliminar la carpeta .vs y volver a implementarlo solucionó el problema.
Philip Stratford
1

Sí, leí todas las respuestas. Sin embargo, si usted es yo y ha estado sacando todo lo que queda de su cabello, intente verificar la carpeta \ bin. Como la mayoría de los archivos de proyecto pueden tener varias configuraciones agrupadas bajo el elemento XML PropertyGroup, luego cambié el OutputPathvalor de 'bin \ Debug' para eliminar la parte '\ Debug' y Reconstruir. Esto colocó los archivos en la carpeta \ bin permitiendo que Express IIS encuentre y cargue la compilación. Me pregunto cuál es la forma correcta de administrar estas diferentes compilaciones para que una implementación de depuración local pueda encontrar y cargar el entorno de destino.

Adam Cox
fuente
Esto es lo único que funcionó. Tantos cuerpos enterrados ... son cosas como esta las que me hacen considerar seriamente otras vocaciones.
Doveryai
0

Este problema se resolvió otorgando el permiso correcto de la carpeta y comprobando desde IIS.

Me dieron permiso a todos cuando estoy probando en mi entorno local. Pero en modo de publicación, creo que solo damos permiso al usuario de ASP.Net.

Ajay2707
fuente
0

También recibí el mismo error ... verifique el nombre de la aplicación que desarrolló correctamente, es decir. el espacio de nombres y el nombre del ensamblado asignados y también intente cambiar físicamente el nombre de la carpeta creada para la aplicación, todo esto debe ser el mismo que el nombre en el espacio de nombres anterior presente en el archivo global.asax

Bhavik
fuente
0

También recibí el mismo error ... compruebe la configuración de IIS de su directorio virtual y asegúrese de que Propiedades - ASP.NET - Versión de ASP.NET sea la misma que Propiedades del proyecto - Aplicación - Marco de destino. (Eso solucionó este error para mí).

montearg70
fuente
0

Mi aplicación se creó en una versión anterior de VS y no tenía una carpeta bin. Lo actualicé a una versión más nueva y tuve una pesadilla para implementarlo. Finalmente rastreé este error hasta Proyecto> Propiedades> Aplicación. El Marco de destino se estableció en 2.0; cambiarlo en el servidor para que coincida con el Administrador de IIS / Grupo de aplicaciones me resolvió el problema.

jeffe65
fuente
0

Descubrí que cambiar el espacio de nombres en el proyecto, sin refactorizar que en toda la solución era mi problema. Verifique las Propiedades de su proyecto y vea cuál es su espacio de nombres, asegúrese de que se alinee, en todos los ámbitos.

Hadley
fuente
0

El problema para mí es que no incluí global.asax.cs en mi proyecto. Y debido a que estaba copiando archivos de un .net 4.5 a un 4.0, no comenté líneas que no son necesarias en 4.0. Debido a que no estaba incluido, Visual Studio lo compiló de todos modos sin problemas. Pero cuando lo incluí, resaltó las líneas que causan problemas.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//using System.Web.Http;
using System.Web.Mvc;
//using System.Web.Optimization;
using System.Web.Routing;

namespace YourNameSpace
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            //GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            //BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}
Satbir Kira
fuente
0

Pasé literalmente un día tratando de resolver esto.

Lo único que funcionó fue eliminar el archivo .sln, crear uno nuevo y volver a agregar los proyectos uno por uno.

¯ \ _ (ツ) _ / ¯ - Programación - ¯ \ _ (ツ) _ / ¯

Stachu
fuente
0

Para mi caso, el ensamblaje web era parte de GAC ... así que después de la compilación, necesitaba instalarse en GAC y funcionó.

Vishnu
fuente
0

Encontré este mensaje de error y finalmente descubrí que el mensaje de error era engañoso. En mi caso, parece haber habido un problema de enrutamiento en IIS que provocó la lectura de global.asax desde otro sitio en el servidor web, generando así el error.

En IIS, mi sitio estaba vinculado a http: * 80: webservices.local y contenía una aplicación llamada MyAPI. Recibí el temido mensaje cuando llamé a la aplicación MyAPI usando la dirección IP del servidor web.

Para llamar con éxito a mi aplicación, tuve que agregar una entrada de archivo de host para webservices.local en todas las máquinas que llamaron a la aplicación MyAPI. Luego, todas mis solicitudes tenían que tener el prefijo http: //webservices.local/MyAPI/ para poder enrutarlas correctamente.

Sheldon
fuente
0

Intenté absolutamente todo aquí y nada funcionó. Mi proyecto estaba en VS 2013. Desde entonces me actualicé a VS 2015 y he estado creando todas mis nuevas aplicaciones en 2015, pero cargando, compilando, compilando, etc., todas mis aplicaciones antiguas que se construyeron en 2013 en esa versión.

Terminé cargando la solución en 2015 y lo resolvió por mí.

Blair Holmes
fuente
0

Pasé varios días en este tema. Finalmente lo resolví con la siguiente combinación de sugerencias de esta publicación.

  1. Cambiar el objetivo de la plataforma a cualquier CPU. No tenía esta configuración actualmente, así que tuve que ir al Administrador de configuración y agregarla. Estaba compilando específicamente para x64. Esto solo no resolvió el error.
  2. Cambie la ruta de salida a en bin\lugar de bin\x64\Debug. Ya lo había intentado varias veces antes de cambiar el objetivo de la plataforma. Nunca hizo una diferencia que no sea obtener un error de que no pudo cargar el ensamblaje debido a un formato no válido.

Para ser claros, tuve que hacer ambos antes de que comenzara a funcionar. Los había probado individualmente varias veces, pero nunca lo solucionó hasta que hice ambas cosas.

Si vuelvo a cambiar cualquiera de estas configuraciones al original, obtengo el mismo error nuevamente, a pesar de haber ejecutado Clean Solution y eliminar manualmente todo en el bindirectorio.

Drew Chapin
fuente
0

Dos formas de conseguir esto:

  • El administrador de configuración muestra las compilaciones dll como una mezcla de compilaciones '64' y 'any cpu'. Ponerlos a todos en la misma compilación lo arregla.

  • Al cambiar entre ramas, la ruta expresa de IIS a veces no se actualiza. Haga clic con el botón derecho en 'IIS Express' en la barra de tareas> Mostrar todas las aplicaciones y verifique que la ruta es hacia la rama correcta.

Carra
fuente