“Mensagem de erro do analisador: não foi possível carregar o tipo” no Global.asax

203

Estou trabalhando em um projeto MVC3 e recebo o seguinte erro:

Mensagem de erro do analisador: Não foi possível carregar o tipo 'GodsCreationTaxidermy.MvcApplication'.

Erro de origem:

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

O erro que recebo é que não é possível carregar GodsCreationTaxidermy.Core.MvcApplication, mas nesta captura de tela a parte Principal não está sendo exibida no erro:

Captura de tela da página de erro

Alguém tem alguma idéia ou solução para esse erro?

PsychoCoder
fonte
8
Você realmente tem a classe GodsCreationTaxidermy.Core.MvcApplication em seu aplicativo? Caso contrário, crie o mesmo e compile o projeto. Isso funcionará com certeza.
Shailesh
4
Sim eu tenho GodsCreationTaxidermy.Core.MvcApplication (Global.asax.cs)
PsychoCoder
O arquivo Global.asax que parece ser usado (de acordo com a captura de tela) parece diferente daquele que você mostrou.
Darin Dimitrov
verificar para ver se a cadeia Inherits é o mesmo que o caminho para a classe em seu aplicativo (namespace + caminho), ou seja, eles são ambos GodsCreationTaxidermy.Core.MvcApplication
linkerro
Essa é uma das questões Darin, não importa o que eu faço isso sempre deixa a parte do núcleo para fora
PsychoCoder

Respostas:

175

Seu servidor da Web local está executando um código diferente do que você está realmente trabalhando. Certifique-se de ter parado a depuração, pare o servidor da Web local, limpe e reconstrua conforme Peter sugeriu, verifique novamente o arquivo global.asax e global.asax.cs e tente novamente.

Se isso não funcionar e você estiver usando o IIS local, tente remover o site no Gerenciador do IIS e recriá-lo manualmente.

Relação Facio
fonte
4
Erro muito estranho mesmo. Eu implantei no IIS no servidor e consegui isso. Limpo e recompilado funcionou para mim também.
Piotr Kula
2
Limpar / reconstruir + recriou o diretório virtual e, em seguida, funcionou.
fantastik78
4
Tive o problema quando tive o mesmo projeto aberto em duas instâncias do Visual Studio. Portanto, eu tinha duas instâncias do IIS Express em execução. Eu tive que fechar um e então foi resolvido.
Lvmeijer
4
Você também pode tentar excluir pastas bin / obj em seu projeto.
arni
1
Eu segui essas instruções e fiz algumas limpezas / reconstruções adicionais, alterei o espaço em branco no arquivo .asax, reformatei meus monitores e fiz um gabarito alegre acompanhado pelos tubos de Pan e isso parecia funcionar.
precisa saber é o seguinte
207

Verifique se o caminho de saída do projeto (propriedades do projeto / Build) está definido como bine não bin\Release oubin\Debug

Por algum motivo, o IIS (servidor de desenvolvimento VS ou IIS local) sempre acessa as bibliotecas do bindiretório (e não procura subdiretórios)

Vincent de Lagabbe
fonte
27
Crédito onde é devido. Corrigido o meu problema, meu aplicativo estava configurado para usar bin \ Debug, alterando-o para bin resolvido. Muito Obrigado.
Joey Bob
Foi interessante saber que os projetos do ASP.NET não usam o caminho de saída padrão bin / $ (Configuration) /. Muito obrigado pela resposta!
Jaanus Varo
2
@ JamesPusateri: tenha cuidado. Toda vez que você iniciar, ele usará o que está em / bin. Provavelmente, o resultado dessa construção que você fez depois de alterá-la.
Vincent de Lagabbe 5/10
1
Em 2018, o IIS ainda está funcionando dessa maneira. Ruim, muito ruim para a Microsoft. Obrigado!
Rodrigo T.
1
nada mudou por quase 7 anos, conselhos ainda ajudam
Yuriy Vikulov 04/01
33

Tente modificar o arquivo global.asax (adicione um espaço em algum lugar) e execute novamente. isso forçará o servidor da Web incorporado a atualizar e recompilar o arquivo global.asax.

Faça também uma limpeza e reconstrução - deve corrigir o problema

Peter Munnings
fonte
4
Modificando global.asax não fez nada para mim, mas um limpa e reconstruir corrigiu o problema :)
NightShovel
Eu tive esse problema quando fiquei sem energia. Limpar e reconstruir ajudou. Obrigado!
Gorgi Rankovski
Falha na limpeza. Falha na construção. Não tive problemas com meu caminho de construção. Isso, no entanto, fez o truque. Obrigado!
egandalf
Obrigado pela sua resposta Sr. Munnings
dada
30

Às vezes, isso acontece se você alterar as informações do espaço para nome (nível do projeto ou da classe) após a global.asaxgeração.

Clique com o botão direito do mouse no Global.asax arquivo e selecione "Abrir com" e selecione "Editor de XML (texto) com codificação" (outros editores também podem funcionar, mas é isso que eu uso).

Em seguida, edite a seção "Herança" na diretiva XML

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

para que ele corresponda ao nome completo real da sua classe Application. E é isso.

Outra opção é copiar todo o seu código do Global.asax.cs e, em seguida, excluir e criar outro arquivo Global.asax (e depois copiar o código novamente para Global.asax.cs).

Paul Easter
fonte
Isso funcionou para mim também. Eu mudei o espaço para nome da montagem para todos os projetos na solução. Portanto, tive que editar o Global.asaxarquivo conforme declarado nesta resposta e torná-lo compatível com o que está nas configurações do projeto.
Shiva
21

Fechei e reabri o estúdio visual e funcionou.

Gagan
fonte
4
fechar TODO o seu estúdio visual
Jboy Flaga 08/12/14
11
Primeiro, devemos todos tentar sair do carro, fechar todas as portas e depois entrar novamente.
pajics
não, você precisa fechar as portas de todos os seus carros ao mesmo tempo.
BlackICE
17

Eu tive que ir para BUILD -> CONFIGURATION MANAGER e - ahem - marque a caixa ao lado do meu projeto para garantir que ele realmente seja construído.

Ron Newcomb
fonte
2
Eu não entendo o voto negativo. Isso poderia ter sido uma solução. Isso é realmente mais relevante do que muitos pensam ... Se desmarcado, nem sempre é o local mais óbvio. Especialmente quando existem várias configurações.
Anthony Mason
Eu gosto da sua resposta e do seu raciocínio!
UKM 14/06
1
Esse também era meu problema e não tenho idéia de como os projetos foram desmarcados da configuração.
Seth
5

Eu tive esse problema hoje e demorei um pouco para encontrar a causa.

Basicamente, meu principal projeto do VS2015 foi incluir um subprojeto que foi construído usando uma versão superior do .Net Framework.

Estranhamente, quando você tem esse problema, o VS2015 informa com satisfação que a solução foi boa, mas quando você tenta executar o site, ele apenas fornece esse erro enganoso, sugerindo que seu Global.asax.csarquivo está errado.

Portanto, se você vir esse erro e a Limpeza / reconstrução não ajudar, abra a Referencesárvore do seu projeto e verifique se há pontos de exclamação.

insira a descrição da imagem aqui

Além disso, verifique sua Outputjanela para mensagens como esta:

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

A solução, é claro, é clicar com o botão direito do mouse no seu projeto principal, selecionar a guia superior "Aplicativo" e alterar a versão do Target Framework para uma versão superior que corresponda ao seu subprojeto.

É irritante que o Visual Studio 2015 permita que você crie e execute completamente soluções que silenciosamente contêm esse problema. Está pedindo problemas ..!

Mike Gledhill
fonte
2

Você também pode verificar as propriedades do seu site no IIS. (No IIS, clique com o botão direito do mouse no site e escolha Propriedades.) Verifique se a configuração Caminho Físico está apontando para o caminho correto para o seu aplicativo, não para outro aplicativo. (Isso corrigiu esse erro para mim.)

Rob Cole
fonte
2

Acabei de encontrar isso em um aplicativo MVC5 e nada estava funcionando para mim. Isso aconteceu logo depois que eu tentei reverter o SVN para uma versão mais antiga do projeto.

Eu tive que excluir o global.asax.cs e, em seguida, adicionei um novo clicando com o botão direito do mouse em Projeto -> Adicionar novo item -> Global.asax e que finalmente o corrigiu.

Apenas pensei que poderia ajudar alguém.

iAteABug_And_iLiked_it
fonte
Se isso o corrigir, provavelmente há algo de errado na propriedade "Ação de compilação" do global.asax.csarquivo existente . Deve ser definido como "Compilar". A ação de compilação do global.asaxpróprio arquivo deve ser definida como "Conteúdo".
Steven Liekens
Fiz exatamente o que @iAteABug_And_iLiked_it fez e o problema foi resolvido!
Zinczinc
2

Tenho que relatar que tentei pelo menos 4 sugestões deste post. Nenhum deles funcionou. No entanto, estou feliz em informar que me recuperei ao recuperar o backup. Só tive que atualizar minhas últimas alterações de código do arquivo de log. Demorou menos de 10 minutos. Passou 3 vezes mais lendo este post e tentando outras sugestões. Desculpe.

Foi um erro muito estranho. Boa sorte para quem encontrar este gremlin.

htm11h
fonte
2

Eu tenho o mesmo problema quando tenho 2 instâncias do Visual Studio executando o mesmo projeto. Então fechei o Visual Studio e abri apenas uma instância e agora funciona bem!

Seyed Morteza Mousavi
fonte
2

Eu estava trabalhando em um projeto da Web ASP.NET 'baseado em pastas' mais antigo (que eu detesto) - e achei essa a minha correção:

Crie uma App_Codepasta (se você ainda não a possui)

Mova o Global.asax.vbarquivo para a App_Codepasta

A marcação no Global.asax pode deixar de fora quaisquer namespaces (pelo menos, para este estilo de projeto, no máximo):

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

... onde "MyApp" é o nome da classe que está sendo definida no Global.asax.vb

bkwdesign
fonte
2

"CONSTRUA -> GERENTE DE CONFIGURAÇÃO e - ahem - marque a caixa ao lado do meu projeto para garantir que ele realmente seja construído." Isso e ir para a pasta do projeto no Windows Explorer, pressionando opções e desmarcando a caixa de seleção "Somente leitura", ajudaram.

Desastre
fonte
simplesmente funcionou para mim. O projeto ainda não possui a opção de compilação ativada. Não sei por que, mas essa solução alternativa foi o que eu precisava, obrigado.
willyMon
1

Esvazie a pasta da lixeira. Crie todas as bibliotecas de classes dependentes e encaminhe-as no projeto principal e crie a solução completa.

Fonte

Vignesh Subramanian
fonte
1

Eu também enfrentei o mesmo problema. Apesar de seguir todas as respostas, não funcionou. Alterei então "Inherits = namespace.class " para "Inherits = nome completo da montagem ", ou seja, "Inherits = namespace.class, assemblyname, Versão =, Culture =, PublicKeyToken = " Espero que ajude.

Mahesh
fonte
1

Isso também pode acontecer se você esquecer acidentalmente de definir sua solução VS como "Vários projetos de inicialização" se estiver executando uma Web e WebApi a partir da mesma solução.

Você pode verificar isso clicando com o botão direito do mouse em Solution no Solution Explorer e selecione 'Properties'. Em seguida, procure por 'Startup Projects'.

Dave Black
fonte
O meu era semelhante a este: eu estava executando o projeto de API errado na solução. Na verdade, tive um erro de compilador na API que pensei estar executando, mas o VS não percebeu quando executei a solução, mesmo após uma limpeza.
John
1

Exclua o .vsdiretório da raiz da solução. Limpar \ limpo. Reconstruir.

Essa questão me deixa maluca de vez em quando e eu inevitavelmente acabo aqui procurando respostas. Eu suspeito que existem várias causas que podem produzir essa exceção, mas isso já funciona para mim.

Patrick Borkowicz
fonte
Várias horas tentando milhares de outras sugestões e essa foi a que fez por mim. Meu aplicativo estava funcionando bem no Visual Studio, nas configurações de depuração e versão, mas uma vez publicado no IIS, eu estava recebendo o erro. A exclusão da pasta .vs e a reimplantação corrigiram o problema.
Philip Stratford
1

Sim, eu li todas as respostas. No entanto, se você é eu e está retirando tudo o que resta do seu cabelo, tente verificar a pasta \ bin. Como a maioria dos arquivos do proj pode ter várias configurações agrupadas no elemento XML PropertyGroup, alterei o OutputPathvalor de 'bin \ Debug' para remover a parte '\ Debug' e reconstruir. Isso colocou os arquivos na pasta \ bin, permitindo que o Express IIS localize e carregue a compilação. Fico imaginando qual é a maneira correta de gerenciar essas compilações diferentes, para que uma implantação de depuração local possa encontrar e carregar o ambiente de destino.

Adam Cox
fonte
Esta é a única coisa que funcionou. Tantos corpos enterrados ... são coisas assim que me fazem considerar seriamente outras vocações.
doveryai 5/06
0

Esse problema foi resolvido com a permissão correta da pasta e a verificação no IIS.

Recebi permissão para todos enquanto testava no meu ambiente local. Mas no modo de publicação, acho que damos apenas permissão ao usuário do ASP.Net.

Ajay2707
fonte
0

Eu também recebi o mesmo erro ... verifique o nome do aplicativo que você desenvolveu corretamente, ou seja. o espaço para nome e o nome do assembly alocados e também tente alterar fisicamente o nome da pasta criada para o aplicativo, tudo isso deve ser igual ao nome no espaço para nome acima, presente no arquivo global.asax

Bhavik
fonte
0

Também recebi o mesmo erro ... verifique a configuração do IIS do seu diretório virtual e verifique se a versão Properties - ASP.NET - ASP.NET é a mesma de Properties - Application - Target Framework. (Isso corrigiu esse erro para mim.)

montearg70
fonte
0

Meu aplicativo foi criado em uma versão mais antiga do VS e não tinha uma pasta bin. Eu o atualizei para uma versão mais recente e tive um pesadelo ao implantar. Finalmente localizei esse erro em Projeto> Propriedades> Aplicativo. O Target Framework foi definido como 2.0; alterá-lo no servidor para corresponder no Gerenciador do IIS / Pool de aplicativos resolveu o problema para mim.

jeffe65
fonte
0

Eu descobri que alterar o espaço para nome no projeto, sem refatorar que, em toda a solução, era meu problema. Verifique as propriedades do seu projeto e veja qual é o seu espaço para nome, garanta que as linhas estejam alinhadas.

Hadley
fonte
0

O problema para mim é que não incluí global.asax.cs no meu projeto. E como eu estava copiando arquivos de um .net 4.5 para um 4.0, não comentei as linhas desnecessárias no 4.0. Porque não foi incluído, o visual studio o compilou sem problemas. Mas quando o incluí, destacou as linhas que causam 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
fonte
0

Passei literalmente um dia tentando resolver isso.

A única coisa que funcionou foi excluir o arquivo .sln, criar um novo e adicionar os projetos novamente um por um.

¯ \ _ (ツ) _ / ¯ - Programação - ¯ \ _ (ツ) _ / ¯

Stachu
fonte
0

No meu caso, o assembly da Web fazia parte do GAC ... então, após a compilação, ele precisa ser instalado no GAC e funcionou.

Vishnu
fonte
0

Encontrei essa mensagem de erro e, finalmente, descobri que a mensagem de erro era enganosa. No meu caso, parece ter havido um problema de roteamento no IIS que causou a leitura do global.asax de outro site no servidor da Web, gerando o erro.

No IIS, meu site estava vinculado a http: * 80: webservices.local e continha um aplicativo chamado MyAPI. Recebi a mensagem temida ao chamar o aplicativo MyAPI usando o endereço IP do servidor web.

Para chamar com êxito o meu aplicativo, tive que adicionar uma entrada de arquivo host para webservices.local em todas as máquinas que chamavam o aplicativo MyAPI. Todos os meus pedidos tiveram que ser prefixados com http: //webservices.local/MyAPI/ para serem roteados corretamente.

Sheldon
fonte
0

Eu tentei absolutamente tudo aqui e nada funcionou. Meu projeto estava no VS 2013. Desde então, atualizei para o VS 2015 e criei todos os meus novos aplicativos em 2015, mas carregando, compilando, construindo etc. todos os meus aplicativos antigos que foram criados em 2013 nessa versão.

Acabei carregando a solução em 2015 e ela resolveu para mim.

Blair Holmes
fonte
0

Passei vários dias nessa questão. Finalmente resolvi com a seguinte combinação de sugestões deste post.

  1. Altere o destino da plataforma para Qualquer CPU. No momento, eu não tinha essa configuração, então tive que ir ao Gerenciador de Configurações e adicioná-la. Eu estava compilando especificamente para x64. Isso por si só não resolveu o erro.
  2. Mude o caminho de saída para em bin\vez de bin\x64\Debug. Eu já havia tentado isso várias vezes antes de alterar o destino da plataforma. Ele nunca fez diferença, além de receber um erro, ao não carregar o assembly devido a um formato inválido.

Para ser claro, eu tive que fazer os dois antes de começar a funcionar. Eu os tinha experimentado individualmente várias vezes, mas ele nunca foi corrigido até que eu fiz os dois.

Se eu alterar uma dessas configurações de volta para a original, o erro será novamente, apesar de ter executado o Clean Solution e excluído manualmente tudo no bindiretório.

Drew Chapin
fonte
0

Duas maneiras de conseguir isso:

  • O gerenciador de configuração mostra as compilações da DLL como uma mistura de compilações '64' e 'qualquer CPU'. Colocá-los todos na mesma compilação corrige isso.

  • Ao alternar entre ramificações, o caminho expresso do IIS às vezes não é atualizado. Clique com o botão direito do mouse em 'IIS Express' na barra de tarefas> Mostrar todos os aplicativos e verifique se o caminho está para a ramificação correta.

Carra
fonte