Aplicativo ASP.NET 2.0 no IIS 5 resultando em erro (aspnet_wp.exe (PID:XXXX) parou inesperadamente.)

StackOverflow https://stackoverflow.com/questions/233478

Pergunta

Após hospedar uma aplicação web ASP.NET 2.0 em um servidor Windows 2000 (IIS 5).Não consegui navegar no site.

A seguinte mensagem de erro foi exibida no navegador e três entradas do log de eventos foram adicionadas...

Mensagem de erro no navegador

Aplicativo de servidor indisponível O aplicativo da web que você está tentando acessar neste servidor da web não está disponível no momento.Clique no botão "Atualizar" em seu navegador para tentar novamente sua solicitação.

Entradas do log de eventos

Tipo de evento:Erro
Fonte do Evento:ASP.NET 2.0.50727.0
Categoria do Evento:Nenhum
ID do evento:1000
Data:24/10/2008
Tempo:15:45:26
Do utilizador:N / D
Computador:XXXXX
Descrição:aspnet_wp.exe (PID:XXXX) parou inesperadamente.

Tipo de evento:Erro
Fonte do Evento:ASP.NET 2.0.50727.0
Categoria do Evento:Nenhum
ID do evento:1088
Data:24/10/2008
Tempo:15:45:26
Do utilizador:N / D
Computador:XXXXX
Descrição:Falha ao executar a solicitação porque o App-Domain não pôde ser criado.Erro:0x80070005 Acesso negado.

Tipo de evento:Aviso
Fonte do Evento:ASP.NET 2.0.50727.0
Categoria do Evento:Nenhum
ID do evento:1073
Data:24/10/2008
Tempo:15:45:26
Do utilizador:N / D
Computador:WEBDEV
Descrição:Falha ao inicializar o AppDomain:/LM/W3SVC/1/Root/WebApplicationName
Exceção:System.IO.FileLoadException
Mensagem:Não foi possível carregar o arquivo ou assembly 'System.Web, Versão=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ou uma de suas dependências.Acesso negado.StackTrace:em System.Reflection.Assembly.nLoad (AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark e stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
em System.Reflection.Assembly.InternalLoad (AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark e stackMark, Boolean forIntrospection)
em System.Reflection.Assembly.InternalLoad (String assemblyString, Evidence assemblySecurity, StackCrawlMark e stackMark, Boolean forIntrospection)
em System.Activator.CreateInstance (String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activateAttributes, Evidence securityInfo, StackCrawlMark e stackMark)
em System.Activator.CreateInstance (String assemblyName, String typeName)
em System.AppDomain.CreateInstance (String assemblyName, String typeName)
em System.AppDomain.CreateInstance (String assemblyName, String typeName)
em System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment (String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters)
em System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors (String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters)

Alguma ideia...

**Editar**

E por que System.IO.FileLoadException é lançado para acessar o System.Web Assembly?

Foi útil?

Solução

Descobri que quando a pasta do site foi copiada para o servidor, ela herdou as permissões de segurança da pasta pai, que só tinha permissão para as contas Administrador, Administradores e Sistema.

Eu adicionei

  • IUSER_MACHINENAME (conta de convidado da Internet)
  • ASPNET (conta de máquina ASP.NET)

Com Ler e executar, Listar conteúdo da pasta e Ler permissões.

Mesmo que o problema esteja resolvido, ainda tenho algumas dúvidas

Fica claro na terceira entrada do log de eventos que o ApplicationManager falha ao criar o HostingEnvironment que está no assembly System.Web.

Como FileLoadException é lançado para System.Web, parece que o processo de trabalho do ASP.NET não tem acesso à pasta GAC.

Por que FileLoadException é lançada para acessar System.Web?

Outras dicas

Pelo que parece, você tem um conjunto de permissões incorreto para a instalação do ASP.NET.Normalmente, a melhor aposta é apenas desinstalar e reinstalar a parte do ASP.NET.Você pode fazer isso facilmente da seguinte maneira.

  1. Abra o prompt de comando em C:\windows\microsoft.net\framework\v2.0.50727
  2. execute o seguinte comando:aspnet_regiis.exe -u
  3. execute o seguinte comando:aspnet_regiis.exe -i

Isso desinstalará o ASP.NET e o reinstalará, o que deverá estabelecer as permissões adequadas para a conta.

Este erro significa que seu código lançou uma exceção que travou o IIS ou forçou seu desligamento.As exceções comuns que causam isso são OutOfMemoryException e StackOverflowException.

Você está recebendo uma FileLoadException, mas pode haver uma OutOfMemoryException subjacente ou similar que é na verdade a causa raiz disso.Sem saber o que você está tentando carregar e o código que está dentro dele, é impossível dizer o que realmente está causando o seu problema.

A primeira coisa que eu faria para descartar um problema com o assembly de carregamento, porém, seria tentar refletir sobre ele em um equipamento de teste e ver se o mesmo problema acontece.Nesse caso, o problema está na DLL que você está tentando carregar, não no IIS.

Eu tive o mesmo problema e não desapareceu com aspnet_regiis com -u e -i e muitos outros sugeridos aqui.Mas depois que limpei a pasta “%windir%\Microsoft.NET\Framework\v2.0.50727 emporary ASP.NET Files” e concedi a esta pasta permissões de leitura e gravação para o usuário da seção de representação de identidade em web.config, o problema desapareceu.Não foi suficiente conceder esses direitos ao usuário local do ASPNET.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top