O cache do IIS removeu diretórios virtuais

2

O problema

Não consigo implantar um site (chame-o de "zzz") em nosso ambiente de produção. Aqui está a exceção:

Server Error in '/Admin' Application.

Parser Error

Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: Could not load type 'zzz.Admin.Default'.

Source Error: 


Line 1:  <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="zzz.Admin.Default" %>
Line 2:  
Line 3:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Source File: /Admin/default.aspx    Line: 1 

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.6.1055.0  

Erro semelhante é abordado em aqui ou aqui mas não estou interessado em alterar o código ( CodeBehind to CodeFile ) porque 1) o projeto funciona perfeitamente, tanto na minha máquina local quanto quando implantado para desenvolvimento (as únicas alterações no código estão no web.config apontando para um banco de dados diferente) e 2) existem algumas indicações há algum outro problema subjacente.

Detalhes

Este é um site antigo para o qual tive que fazer algumas alterações e aproveitei a oportunidade para fazer algumas limpezas (como mesclar código duplicado conflitante que era diferente entre os projetos ...). A solução foi previamente dividida em quatro projetos diferentes (Admin, Account, o "default website" root, e um outro), cada um com seu próprio diretório virtual no IIS (3 abaixo do site raiz). Eu combinei isso em um projeto e me livrei dos diretórios virtuais. Tudo funciona bem na minha máquina. Tudo funciona bem no ambiente de desenvolvimento. Mas isso não funciona na produção.

Se eu copiar a pasta / bin como as coisas costumavam ser, o site funcionará novamente.

versão / código antigo; funciona no local, dev e & Produção; diretórios virtuais.

+-+     website zzz
  +-+   /Account
  | +-- /Account/bin (Account.dll)
  |
  +-+   /Admin
  | +-- /Admin/bin (Admin.dll)
  |
  +...

nova versão / código; trabalha no local, dev; dll compartilhada na pasta bin; sem diretórios virtuais. Não funciona em produção.

+-+     website zzz
  +-+   /Account
  |
  +-+   /Admin
  |
  +-+   /bin (zzz.dll)
  |
  +...

Para que o site funcione na produção, tenho que copiar a pasta bin para os locais anteriores:

+-+     website zzz
  +-+   /Account
  | +-- /Account/bin (zzz.dll)
  |
  +-+   /Admin
  | +-- /Admin/bin (zzz.dll)
  |
  +...

Se eu remover arquivos temporários, posso ver as pastas / Admin e / Account sendo criadas no local temporário (com nova dll), mesmo que tudo deva estar apenas em uma pasta (certo?).

Estou esperando que arquivos temporários apareçam em C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\ , mas eles estão sendo criados um nível acima, por exemplo C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\admin , um para cada local onde a pasta / bin é copiada.

Eu tentei remover os arquivos temporários deste site, iniciar e parar o site e iniciar e parar os pools de aplicativos. A reinicialização ainda não foi tentada, pois há vários sites diferentes hospedados na mesma instância, mas isso provavelmente acontecerá em breve.

Ambiente

Duas máquinas diferentes, atrás de um balanceador de carga, mas ambas estão fazendo referência a uma pasta compartilhada em que o site está localizado. Na verdade, Gerenciamento DFS é realmente usado para sincronizar a pasta do site entre as duas máquinas (isso pode estar relacionado?).

AFAIK nossos ambientes dev e prod são os mesmos, mas pode haver algo fora de sincronia, o que aconteceu antes. Não tenho certeza do que estou procurando, pois as configurações do IIS parecem ser as mesmas, em geral.

Não há nada no web.config sobre o armazenamento em cache.

pool de aplicativos "Ativar aplicativo de 32 bits" está definido como falso em todos os ambientes.

A não é superfetch (nunca esteve) ativado.

formas de vitória segmentação de projeto .net framework 4
IIS 7.5.7600.16385
Windows Server 2008 R2

Editar atualização

Existem 15 patches no dev não no prod e 65 patches no prod não no dev. Tentando descobrir a melhor maneira de resolver isso (com a ajuda de aqui ).

    
por BurnsBA 10.10.2016 / 15:56

1 resposta

0

A reinicialização corrigiu o problema (nossa manutenção programada regularmente). Eu estou supondo que algo estava em algum lugar. Se alguém tiver uma explicação melhor, aceitarei essa resposta.

    
por 11.10.2016 / 15:07

Tags