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?

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.


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!


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:


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


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.


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.


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


Alguns recursos não estão presentes no IS2010. Experimente mais versões anteriores.
Vishnu Prasanth
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.