“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?


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.


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)


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


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


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.


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.


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


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


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.


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.


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!


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


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.


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


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.


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


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.


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.


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.


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


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


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.


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.


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);
        }
    }
}

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 - ¯ \ _ (ツ) _ / ¯


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.


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.


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.


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.