Eu tenho um aplicativo ASP.NET MVC (beta) em que estou trabalhando e estou tendo problemas para descobrir se estou fazendo algo errado ou se meu Application_Start
método no Global.asax.cs na verdade não está sendo acionado quando tento para depurar o aplicativo.
Coloquei um ponto de interrupção em uma linha no meu Application_Start
método e espero que, quando eu tentar depurar o aplicativo, o ponto de interrupção seja atingido ... mas nunca ocorre. Nem depois de redefinir o IIS, nem depois de reiniciar, nem sempre. Estou esquecendo de algo? Por que esse método nunca é chamado?
c#
asp.net-mvc
Bob Yexley
fonte
fonte
global.asax
arquivo estava simplesmente ausente. então isso também vale a pena conferir :-)Respostas:
Se estiver no IIS, o aplicativo poderá ser iniciado antes da conexão do depurador. Em caso afirmativo, não tenho certeza se você pode dormir o tempo suficiente para se conectar.
No Visual Studio, você pode anexar o depurador a um processo. Você pode fazer isso clicando em Debug >> Attach to process. Anexe ao navegador e, em seguida, clique no seu aplicativo. Para ser seguro, reinicie o IIS e acesse o site. Não estou 100% convencido de que isso resolverá o problema, mas será muito melhor do que disparar um sono de thread no App_Start.
Outra opção é hospedar temporariamente no servidor da Web incorporado até concluir a depuração do início do aplicativo.
fonte
Nota: uma boa alternativa fácil de usar o "Visual Studio Development Server" ou o IIS Express embutido (por exemplo, porque você está desenvolvendo no IIS e possui configurações específicas necessárias para o funcionamento adequado do seu aplicativo) é simplesmente continuar executando o IIS (I use o servidor da Web personalizado + entrada de arquivo hosts + ligação do IIS ao mesmo domínio)
Seu ponto de interrupção deve ser atingido bem e você pode continuar depurando em seu habitat natural do IIS . Ótimo !
fonte
A seguir, ajuda em qualquer caso (não importa se você estiver usando o IIS, Cassini ou o que for):
Por que isso funciona? Quando o web.config é alterado, o servidor da Web (IIS, Cassini etc.) faz uma reciclagem, mas nesse caso (por qualquer motivo), o processo permanece o mesmo, para que você se mantenha conectado ao depurador (Visual Studio )
fonte
Também estou tendo problemas com pontos de interrupção em application_start com o IIS, um aplicativo hospedado. Uma boa solução alternativa é usar Debugger.Break (); no código em vez do ponto de interrupção do VS
fonte
Eu tenho apenas o mesmo problema. Renomei bastante na minha solução. Depois disso, obtive dois aplicativos da web que não estavam funcionando e vários outros aplicativos da web estavam bem. Eu recebi o erro de ter rotas erradas. Quando tentei configurar o ponto de interrupção no
Application_Start
método e reinicie o IIS, o VS não interrompeu a execução. Com aplicações web viáveis, a quebra estava funcionando. Lembrei que "solução limpa" e "reconstruir" não excluem os assemblies que foram deixados após a renomeação. E isso foi solução! Eu limpei manualmente osbin
diretórios dos meus aplicativos da web de buggy e vi um novo erro noGlobal.asax
Inherits=""
atributo que foi referenciado pela dll antiga. Eu mudei de novo e o intervalo começou a funcionar. Suponha que, durante a renomeação de Global.asax não tenha sido atualizado,fonte
Tínhamos o mesmo problema em um projeto que assumimos depois que outro fornecedor o construiu. O problema era que, embora houvesse vários comandos escritos pelo fornecedor anterior no Global.asax.cs, o que poderia levar você a acreditar que estava em uso, na verdade estava sendo totalmente ignorado. O Global.asax não estava herdando dele, e é fácil nunca ver esse arquivo se o arquivo .cs estiver presente - você deve clicar com o botão direito do mouse em Global.asax e clicar em Exibir marcação para realmente vê-lo.
Global.asax:
Precisava ser alterado para:
Onde ProjectNamespace é qualquer que seja o namespace da sua classe Global.asax.cs (geralmente o nome do seu projeto).
No nosso caso, o arquivo continha vários códigos embutidos, alguns dos quais foram copiados e colados no arquivo .cs, outros não. Acabamos de despejar o código embutido no arquivo .cs e gradualmente incorporar nossas alterações.
fonte
Tente mudar o modo de pipeline gerenciado do pool de aplicativos para "Clássico" em vez de "Integrado". Isso resolveu o problema para mim. Olhando para a razão agora ...
(Os adereços para esta resposta pertencem a Flores (veja o comentário dele em sua própria resposta), eu só queria fornecer isso como uma resposta separada para chamar mais atenção)
fonte
Verifique se o arquivo global.asax não está em um subdiretório. Ele deve ser colocado no nível raiz no seu projeto.
fonte
Global.asax.cs
e esperava que funcionasse. Você precisa criá-lo usandoAdd
->New Item
->Global Application Class
para que seja criado com oGlobal.asax
arquivo de configuração de formulários da web correspondente .Tivemos um problema semelhante, em que global.asax.cs estava sendo ignorado.
Acontece que o site foi atualizado de um site .NET 2 pré-compilado para um site .NET 4.0. No servidor, o
PrecompiledApp.config
arquivo não havia sido excluído da pasta raiz. Após excluí-lo e reciclar o pool de aplicativos do IIS e tocar em web.config para reiniciar o aplicativo, o código no Global.asax.cs começou a funcionar bem.fonte
Tive um problema uma vez em que o Global.asax e o Global.asax.cs não eram realmente copiados para a pasta IIS pelos scripts de implantação ... Portanto, funcionou durante a depuração no servidor de desenvolvimento, mas não no IIS.
fonte
Uma entrada tardia ...
Para testar se o Aplicativo IIS é iniciado ou não antes que o depurador tenha tempo suficiente para anexar, basta adicioná-lo à parte superior ou inferior do seu GLOBAL.ASAX
Application_Start
.fonte
Quando você diz "debug", você quer dizer realmente iniciar o aplicativo a partir do servidor da Web incorporado do Visual Studio para depuração, ou quer se associar ao processo no IIS? Se for o primeiro, você deve pressionar Application_Start, mas se for o segundo, pode ser difícil estar no processo com antecedência suficiente para detectá-lo.
fonte
Feche o Visual Studio e exclua as pastas
bin
eobj
no seu projeto da web (ou em todos os projetos da solução).Aqui estão os comandos para excluir essas pastas de todos os seus projetos:
fonte
Eu fiz algumas alterações com base em "Análise de código na compilação" do Visual Studio. A análise de código sugeriu "CA1822 Marcar membros como estáticos" para Application_Start () no Global.asax. Eu fiz isso e acabei com esse problema.
Sugiro suprimir esta mensagem de análise de código e não alterar a assinatura dos métodos / classes criados automaticamente pela plataforma usada para inicializar o aplicativo. A assinatura do método Application_Start provavelmente não era estática por um motivo.
Voltei a esta assinatura de método e Application_Start () estava disparando novamente:
fonte
Eu enfrentei esse problema ao usar uma página estática (por exemplo, index.html) como a página de inicialização - o Application-Start não é chamado. Descobri que exibir uma página estática não inicia o aplicativo. Solicitar uma página .aspx faz.
fonte
Verifique se os espaços para nome em Global.asax e Global.asax.cs são iguais. Se eles forem diferentes, não gerará nenhum erro, mas não atingirá o ponto de interrupção também porque não está executando o application_start.
fonte
Acho que o evento de início do aplicativo só é acionado quando a primeira solicitação é feita. Você está acessando o site (por exemplo, está fazendo uma solicitação)?
fonte
Eu tive esse problema em um projeto vs2010 de formulários da web .net 4 e tentei de tudo mencionado nesta página. Acabou removendo e adicionando global.asax realmente resolveu o problema para mim.
fonte
Eu tinha o mesmo problema, não consegui pegar o Application_Start. E o motivo era que não estava disparando para um erro de correspondência no arquivo de marcação. O arquivo de marcação Global.asax estava herdando outra classe ...
fonte
Você verificou as configurações do projeto? Eu tive esse problema e o URL de início foi para uma porta diferente da porta específica do servidor. Levei muito tempo para descobrir ...
fonte
Depois de tentar tantas outras respostas aplicáveis na minha situação e não ter sorte com nenhuma delas, entrei nas propriedades do projeto Web (o projeto do lado do servidor para um aplicativo Silverlight usando os Serviços RIA), clique no botão "Web" e alterou o servidor selecionado de "IIS local" para "IIS Express". (Observe que estou usando o VS2013.) Isso resolveu o problema. Application_Start é executado no "IIS Express", mas não no "IIS local". Interessante...
fonte
Eu estava tentando percorrer o código em RegisterRoutes () chamado desde o início do aplicativo e não atingindo meu ponto de interrupção. Eu determinei que Application_Start não estava sendo chamado. Eu tive que fazer uma alteração para fazer uma alteração superficial no App_start / RouteConfig.cs e salvá-lo antes que o Application_Start fosse chamado. Eu acho que esses arquivos são armazenados em cache em algum lugar e não são chamados, a menos que uma alteração seja feita.
fonte
Meu mesmo problema foi resolvido adicionando referência de
System.Web.Routing
montagem no projetofonte
Se você estiver usando o System.Diagnostics.Debugger.Break (); solução alternativa (que acho adequada para uso temporário) e "simplesmente não está funcionando" na sua máquina Windows 8. O motivo é um erro na depuração "Just in time" do Visual Studio.
A correção é a seguinte: corrigir a chave do "Depurador do Visual Studio Just-in-Time"
Abra o regedit e vá para HKEY_CLASSES_ROOT \ AppID {E62A7A31-6025-408E-87F6-81AEB0DC9347} para o valor do registro 'AppIDFlags', defina o sinalizador como 0x8
Mais informações aqui: http://connect.microsoft.com/VisualStudio/feedback/details/770786/just-in-time-debugging-operation-attempted-is-not-supported
fonte
No meu caso, matar a instância interna do ASP.NET Development Server pela bandeja do sistema resolveu o problema.
fonte
Coisas estranhas e loucas ... mas a depuração em uma máquina servidor e outro usuário deixaram o IIS Express em execução em sua sessão. Eu tive que fazer logoff desse usuário para matar seus processos em execução do IIS Express. Isso parece ter resolvido o problema!
Atualizar
Depois de passar mais de 1 hora perseguindo o que estava causando o problema ... eis o negócio: consegui digitar um
s
dentro da<appSettings>
seçãoWeb.config
. O Visual Studio tentou me avisar naError List
janela com um aviso . Confesso que raramente verifique os avisos ... deve começar a verificar a partir de agora. : D Assim que removi a ofensa,s
o ponto de interrupção foi atingidoApplication_Start
.fonte
Eu tive esse problema ao tentar inicializar o log4net. Eu decidi fazer apenas um construtor estático para o Global.asax
fonte
O problema ocorre principalmente quando você tenta realocar o arquivo Global.asax para outro diretório de solução. Realoque o arquivo Global.asax novamente para o local padrão. Funcionará como esperado.
fonte
Nenhuma das soluções descritas acima funcionou para mim. No entanto, reinstalar o pacote
usando nuget gui é uma solução alternativa (não muito legal)
fonte