Para que serve a pasta aspnet_client na estrutura do IIS?

108

Percebo que freqüentemente há uma pasta aspnet_client na estrutura de pastas da web padrão do IIS. Para que é usado? É necessário?

Cara
fonte

Respostas:

91

Nos dias .NET 1.1 e anteriores, essa pasta fornecia ao ASP.NET seu suporte a JavaScript para os controles de validação e outras funcionalidades. Se você não tiver um site .NET 1.1 ou anterior em execução, deve ser seguro excluí-lo. Eu iria renomeá-lo primeiro para garantir que não causasse problemas.

Duncan
fonte
15
Ele aparece para lembrá-lo de como não fazer mais coisas desse tipo ... :)
Ostati
Mesmo que você esteja fora do .Net 1,1 dias você pode usar o Crystal Reports, que infelizmente ainda usa a pasta mencionada (e provavelmente também existe outro software com o mesmo comportamento). Portanto, pelo menos, faça backup antes de excluir a pasta
Vadim Levkovsky
66

Além do que outros disseram, geralmente é criado pela ferramenta aspnet_regiis, que pode ser (re) executado por coisas como Windows Update / AddRemove componentes do Windows / IIS. Portanto, às vezes, mesmo que você o exclua, ele pode voltar aleatoriamente. Pode haver uma maneira de interromper esse comportamento, mas eu não encontrei (talvez alterar a versão do aplicativo para .NET 2 resolveria).

Portanto, a menos que você esteja usando certos recursos do .NET 1.0 / 1.1 (validação, navegação inteligente, etc.), você pode excluí-lo sem problemas, mas não se surpreenda se ele voltar!

spmason
fonte
28
Acho que volta periodicamente. O que é mais frustrante nisso é que sempre que ele volta, ele quebra o WebDeploy, pois a conta sob a qual ele é executado não tem acesso para excluir a pasta aspnet_client criada!
Russ Cam
5
@RussCam I tem exatamente o mesmo problema. Ele interrompe o WebDeploy pelo mesmo motivo. Alguém encontrou uma maneira de impedir que esta pasta fosse criada aleatoriamente?
tugberk de
4
Eu instalei inocentemente o DotNet Framework 4.5 e pouco tempo depois nossa implantação do WebDeploy (acionada via TeamCity) falhou pelo MESMO motivo. A maldita pasta voltou como resultado da instalação do 4.5. Alguém, por favor, faça parar.
Michael12345
2
Eu agora recorrei a realmente adicionar essas pastas ao nosso pacote de implantação para que o TeamCity não tente removê-las. Parece que está poluindo nossa base de código, mas esperamos que pare a luta pelo poder entre o ASP.NET e a implantação de nosso aplicativo.
Michael12345
1
Também estou seriamente aborrecido com esta pasta voltando o tempo todo, não temos sites asp.net 1.x, e ainda assim, aparentemente, todas as atualizações automáticas do Windows colocam essa pasta sangrenta em todos os sites, quebrando todas as minhas implantações na web. Concordo com @ Michael12345 que não é uma ótima solução adicionar pastas inúteis ao SC apenas para fazer as implantações continuarem a funcionar e não precisam ser corrigidas manualmente todas as segundas-feiras após as atualizações de vitória do fim de semana, adicioná-lo de volta a cada site (com permissões ACL incorretas) . Irritante !
MemeDeveloper
15

aspnet_client é uma pasta para "recursos que devem ser servidos via HTTP, mas são instalados por servidor, em vez de por aplicativo".

Alguns dos usos de aspnet_client incluem o armazenamento de recursos (por exemplo, JavaScript, imagens) para:

  • JavaScript para controles ASP.NET Web Forms ao usar validação do lado do cliente (principalmente para manipular navegadores mais antigos como IE5, ao que parece)
  • ASP.NET 2.0 (até o framework 4.0) para 'Temas Globais' (global para todos os sites em um servidor, isto é)
  • algumas versões do Crystal Reports

Provavelmente haverá / haverá mais (ab) usos desta pasta no futuro. Desnecessário dizer que, uma vez que contém coisas que são "necessárias para o aplicativo funcionar corretamente", mas que "não deveriam ser implantados pelo aplicativo", ele permanecerá como um pesadelo para desenvolvedores e administradores de sistema.

Parece que o 'protótipo' para o conteúdo da pasta está em C: \ inetpub \ wwwroot \, e parece razoável supor que se algum site do IIS não tiver um recurso / aspnet_client, o IIS tentará fazer a coisa certa e ... como último recurso ... crie uma pasta física na pasta raiz do site e copie os arquivos lá. Parece que o IIS fará isso pelo menos quando "ASPNET_regiis / c" for chamado em um determinado servidor - o que provavelmente ocorre automaticamente em alguns momentos críticos ... como quando as atualizações do .NET framework são aplicadas a um servidor que tem a função IIS.

As estratégias para lidar com o diretório aspnet_client incluem: * especificar um diretório virtual mapeado para C: \ inetpub \ wwwroot na esperança de que o IIS renuncie à criação de um diretório físico * exclua o diretório físico de tempos em tempos se tiver certeza de que seu site não não preciso e realmente incomoda você * ignorando aspnet_client * executando "ASPNET_regiis / c" você mesmo se estiver faltando a pasta e precisar dela

Provavelmente mais importante, como desenvolvedor, você deve entender e documentar claramente as dependências de seus aplicativos no diretório aspnet_client e certificar-se de que seu procedimento de instalação tenha instruções relevantes para garantir que o diretório exista. No entanto, você provavelmente não deve se preocupar em fornecer o diretório como parte de seu aplicativo da web ou site da web empacotado - como você poderia fazer isso para cada versão do .NET framework que o servidor verá durante o tempo de vida de seu aplicativo ?!

Alguns links voltarei mais tarde:

David Bullock
fonte
então, se você adicionar a pasta aspnet_client em wwwroot, seu conteúdo será copiado para cada aplicativo da web que você instalar, eu acho
George Birbilis
8

Ele também tem certos ícones e scripts que são necessários para que os Crystal Reports sejam executados adequadamente, mesmo em versões posteriores a 1.1


fonte
Sim, descobri isso da maneira mais difícil. Mudei nossa instância do Ripplestone de um diretório virtual no site padrão para o seu próprio site e tudo começou a ficar estranho no Ripplestone. Eu olhei para o console javascript e vi que ele estava procurando coisas em C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13 Não tenho certeza se era a coisa certa a fazer ou não, mas eu apenas copiei toda a pasta aspnet_client da raiz para o diretório em que minha instância Ripplestone residia.
Adam Nofsinger
3

A pasta geralmente é para armazenar Javascript do lado do cliente, que ASP.NET usa para coisas como validação.

Deve ser seguro excluir.

JamesSugrue
fonte
1

Achei melhor adicionar isso aqui, pois este é o link para o qual sempre fui direcionado quando pesquisei essa pergunta no Google. Aparentemente, com o .NET 4.0 e mais recente, essa pasta não é mais necessária e pode ser removida sem problemas.

David
fonte
0

Se você estiver usando o Installshield para configurar o site ASP.net, esteja ciente de que esse recurso estava presente no Installshield 2010 e não foi encontrado no Installshield 2012. Installshield 2010 Vs 2012

Vishnu Prasanth
fonte
Alguns recursos não estão presentes no IS2010. Experimente mais versões anteriores.
Vishnu Prasanth