¿Para qué sirve la carpeta aspnet_client en la estructura de IIS?

108

Noto que con frecuencia hay una carpeta aspnet_client en la estructura de carpetas web estándar de IIS. ¿Para qué se usa esto? Es necesario

Chico
fuente

Respuestas:

91

En .NET 1.1 días y antes, esta carpeta proporcionó a ASP.NET su soporte de JavaScript para los controles de validación y otras funciones. Si no tiene un sitio .NET 1.1 o anterior en ejecución, debería ser seguro eliminarlo. Primero le cambiaría el nombre para asegurarme de que no cause ningún problema.

Duncan
fuente
15
Aparece para recordarte cómo no hacer más cosas así ... :)
Ostati
Incluso si ahora está fuera de .Net 1.1 días, puede usar Crystal Reports, que desafortunadamente todavía usa la carpeta mencionada (y probablemente también haya otro software con el mismo comportamiento). Entonces, al menos, haga una copia de seguridad antes de eliminar la carpeta
Vadim Levkovsky
66

Además de lo que otros han dicho, generalmente es creado por la herramienta aspnet_regiis, que puede (re) ejecutarse con cosas como Windows Update / AddRemove Windows components / IIS. Entonces, a veces, incluso si lo elimina, puede volver al azar. Puede haber una forma de detener este comportamiento, pero no la he encontrado (tal vez cambiar la versión de la aplicación a .NET 2 lo haría).

Entonces, a menos que esté usando ciertas características de .NET 1.0 / 1.1 (validación, navegación inteligente, etc.), puede eliminarlo sin ningún problema, ¡pero no se sorprenda demasiado si vuelve!

spmason
fuente
28
Encuentro que vuelve periódicamente. Lo más frustrante de esto es que cada vez que vuelve, rompe WebDeploy ya que la cuenta bajo la cual se ejecuta no tiene acceso para eliminar la carpeta aspnet_client creada.
Russ Cam
5
@RussCam Tengo exactamente el mismo problema. Rompe WebDeploy por la misma razón. ¿Alguien encontró una manera de evitar que esta carpeta se cree aleatoriamente?
tugberk
4
Acabo de instalar DotNet Framework 4.5 inocentemente y poco tiempo después nuestra implementación de WebDeploy (activada a través de TeamCity) se rompió por la MISMA razón. La maldita carpeta volvió a aparecer como resultado de la instalación de 4.5. Alguien, por favor, haz que se detenga.
Michael12345
2
Ahora he recurrido a agregar estas carpetas a nuestro paquete de implementación para que TeamCity no intente eliminarlas. Parece que está contaminando nuestra base de código, pero con suerte detendrá la lucha de poder entre ASP.NET y la implementación de nuestra aplicación.
Michael12345
1
También estoy muy molesto porque esta carpeta regresa todo el tiempo, no tenemos sitios asp.net 1.x, y sin embargo, aparentemente cada actualización automática de Windows coloca esta maldita carpeta en cada sitio, rompiendo todas mis implementaciones web. Estoy de acuerdo con @ Michael12345 en que no es una gran solución agregar carpetas inútiles a SC solo para que las implementaciones continúen funcionando y no sea necesario corregirlas manualmente todos los lunes después de que las actualizaciones ganadoras del fin de semana lo vuelvan a agregar a todos y cada uno de los sitios (con permisos de ACL incorrectos) . Molesto
MemeDeveloper
15

aspnet_client es una carpeta para "recursos que deben ser servidos a través de HTTP, pero que se instalan por servidor, en lugar de por aplicación".

Algunos de los usos de aspnet_client incluyen el almacenamiento de recursos (por ejemplo, JavaScript, imágenes) para:

  • JavaScript para los controles de formularios Web Forms de ASP.NET cuando se usa la validación del lado del cliente (principalmente para manipular navegadores más antiguos como IE5, al parecer)
  • ASP.NET 2.0 (hasta en el marco 4.0) para 'Temas globales' (global para todos los sitios en un servidor, es decir)
  • algunas versiones de Crystal Reports

Probablemente haya / habrá más (ab) usos de esta carpeta en el futuro. No hace falta decir que, dado que contiene cosas que son "necesarias para que la aplicación se ejecute correctamente" pero que "se supone que la aplicación no debe implementar", seguirá siendo una pesadilla tanto para los desarrolladores como para los administradores del sistema.

Parece que el 'prototipo' del contenido de la carpeta está en C: \ inetpub \ wwwroot \, y parece razonable suponer que si un sitio web de IIS determinado carece de un recurso / aspnet_client, IIS intentará hacer lo correcto. y ... como último recurso ... cree una carpeta física en la carpeta raíz del sitio web y copie los archivos allí. Parece que IIS hará esto al menos cuando se invoca "ASPNET_regiis / c" en un servidor determinado, lo que probablemente ocurre automáticamente en algunas coyunturas críticas ... como cuando las actualizaciones de .NET Framework se aplican a un servidor que tiene la función IIS.

Las estrategias para manejar el directorio aspnet_client incluyen: * especificar un directorio virtual asignado a C: \ inetpub \ wwwroot con la esperanza de que IIS se abstenga de crear un directorio físico * eliminar el directorio físico de vez en cuando si está seguro de que su sitio no lo hace ' No lo necesita y realmente le molesta * ignorando aspnet_client * ejecutando "ASPNET_regiis / c" usted mismo si le falta la carpeta y la necesita

Probablemente lo más importante, como desarrollador, debe comprender y documentar claramente las dependencias de sus aplicaciones en el directorio aspnet_client, y asegurarse de que su procedimiento de instalación tenga instrucciones relevantes para asegurarse de que exista el directorio. Sin embargo, probablemente no debería molestarse en proporcionar el directorio como parte de su aplicación web empaquetada o sitio web; ¿cómo podría hacer esto para cada versión del marco .NET que verá el servidor durante la vida útil de su aplicación?

Algunos enlaces a los que volveré más adelante:

David Bullock
fuente
Entonces, si agrega la carpeta aspnet_client en wwwroot, su contenido se copiará en cada aplicación web que instale, supongo
George Birbilis
8

También tiene ciertos iconos y scripts que son necesarios para que los informes de Crystal se ejecuten correctamente incluso en versiones posteriores a la 1.1.


fuente
Yah, descubrí esto por las malas. Moví nuestra instancia de Ripplestone de un directorio virtual en el sitio web predeterminado a su propio sitio web, y todo comenzó a volverse extraño en Ripplestone. Miré a la consola de Javascript, y vio que estaba buscando cosas debajo C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13 No estoy seguro de si era el derecho que hay que hacer o no, pero acabo de copiar toda la carpeta aspnet_client desde la raíz hasta el directorio de mi ejemplo Ripplestone vivía.
Adam Nofsinger
3

La carpeta suele ser para almacenar Javascript del lado del cliente, que ASP.NET usa para cosas como la validación.

Debería ser seguro eliminarlo.

JamesSugrue
fuente
1

Pensé que agregaría esto aquí, ya que este es el enlace al que me seguían dirigiendo cuando busqué en Google esta pregunta. Aparentemente, con .NET 4.0 y versiones posteriores, esta carpeta ya no es necesaria y se puede eliminar sin problemas.

David
fuente
0

Si está utilizando Installshield para configurar el sitio web ASP.net, tenga en cuenta que esta función estaba presente en Installshield 2010 y falta en Installshield 2012. Installshield 2010 frente a 2012

Vishnu Prasanth
fuente
Algunas funciones no están presentes en IS2010. Prueba más versiones anteriores.
Vishnu Prasanth