À quoi sert le dossier aspnet_client sous la structure IIS?

108

Je remarque qu'il y a fréquemment un dossier aspnet_client sous la structure de dossiers Web standard d'IIS. À quoi cela sert-il? Est-ce nécessaire?

Gars
la source

Réponses:

91

Dans les jours .NET 1.1 et avant, ce dossier fournissait à ASP.NET sa prise en charge JavaScript pour les contrôles de validation et d'autres fonctionnalités. Si vous n'avez pas de site .NET 1.1 ou plus ancien en cours d'exécution, vous devriez pouvoir le supprimer en toute sécurité. Je le renommerais d'abord pour m'assurer qu'il ne pose aucun problème.

Duncan
la source
15
Il apparaît pour vous rappeler comment ne plus faire de choses comme ça ... :)
Ostati
Même si vous êtes maintenant hors des jours .Net 1.1, vous pouvez utiliser Crystal Reports, qui malheureusement utilise toujours le dossier mentionné (et il existe probablement également d'autres logiciels avec le même comportement). Alors, au moins, faites une sauvegarde avant de supprimer le dossier
Vadim Levkovsky
66

En plus de ce que d'autres ont dit, il est généralement créé par l'outil aspnet_regiis, qui peut être (re) exécuté par des éléments tels que Windows Update / AddRemove Windows components / IIS. Donc parfois, même si vous le supprimez, il peut revenir au hasard. Il peut y avoir un moyen d'arrêter ce comportement, mais je ne l'ai pas trouvé (peut-être que changer la version de l'application en .NET 2 le ferait réellement).

Donc, à moins que vous n'utilisiez certaines fonctionnalités de .NET 1.0 / 1.1 (validation, Smart Navigation, etc.), vous pouvez le supprimer sans aucun problème, ne soyez pas trop surpris s'il revient!

Spmason
la source
28
Je trouve qu'il revient périodiquement. Ce qui est le plus frustrant, c'est qu'à chaque fois qu'il revient, il casse WebDeploy car le compte sous lequel il s'exécute n'a pas accès pour supprimer le dossier aspnet_client créé!
Russ Cam
5
@RussCam J'ai exactement le même problème. Il casse le WebDeploy pour la même raison. Quelqu'un a-t-il trouvé un moyen d'empêcher la création aléatoire de ce dossier?
tugberk
4
Je viens d'installer de manière innocente DotNet Framework 4.5 et peu de temps après, notre déploiement WebDeploy (déclenché via TeamCity) a échoué pour la MÊME raison. Le dossier darn est revenu à nouveau à la suite de l'installation de 4.5. Quelqu'un, s'il vous plaît, arrêtez-le.
Michael12345
2
J'ai maintenant recours à l'ajout de ces dossiers à notre package de déploiement afin que TeamCity n'essaye pas de les supprimer. On a l'impression que cela pollue notre base de code, mais j'espère que cela arrêtera la lutte de pouvoir entre ASP.NET et le déploiement de notre application.
Michael12345
1
Je suis également sérieusement ennuyé par ce dossier qui revient tout le temps, nous n'avons pas de sites asp.net 1.x, et pourtant, apparemment, chaque mise à jour automatique de Windows met ce dossier sanglant dans chaque site, ce qui brise tous mes déploiements Web. Je suis d'accord avec @ Michael12345 que ce n'est pas une excellente solution pour ajouter des dossiers inutiles à SC juste pour que les déploiements continuent de fonctionner et qu'il ne soit pas nécessaire de les réparer manuellement tous les lundis après les mises à jour gagnantes du week-end, ajoutez-le à chaque site (avec des perms ACL incorrectes) . Énervant !
MemeDeveloper
15

aspnet_client est un dossier pour "les ressources qui doivent être servies via HTTP, mais qui sont installées sur une base par serveur, plutôt que par application".

Certaines des utilisations de aspnet_client incluent le stockage de ressources (par exemple, JavaScript, images) pour:

  • JavaScript pour les contrôles Web Forms ASP.NET lors de l'utilisation de la validation côté client (principalement pour manipuler les navigateurs plus anciens comme IE5, semble-t-il)
  • ASP.NET 2.0 (jusqu'à au framework 4.0) pour les `` thèmes globaux '' (global à tous les sites sur un serveur, c'est-à-dire)
  • certaines versions de Crystal Reports

Il y aura probablement d'autres utilisations (ab) de ce dossier dans le futur. Inutile de dire qu'il contient des éléments "nécessaires au bon fonctionnement de l'application" mais qui "ne sont pas censés être déployés par l'application", cela restera un véritable cauchemar pour les développeurs et les administrateurs système.

Il semble que le 'prototype' pour le contenu du dossier se trouve dans C: \ inetpub \ wwwroot \, et il semble raisonnable de supposer que si un site Web IIS donné ne dispose pas d'une ressource / aspnet_client, IIS essaiera de faire la bonne chose et ... en dernier recours ... créez un dossier physique dans le dossier racine du site Web et copiez-y les fichiers. Il semble qu'IIS fera cela au moins lorsque "ASPNET_regiis / c" est appelé un serveur donné - ce qui se produit probablement automatiquement à certains moments critiques ... comme lorsque les mises à jour de .NET Framework sont appliquées à un serveur qui a le rôle IIS.

Les stratégies de gestion du répertoire aspnet_client incluent: * la spécification d'un répertoire virtuel mappé sur C: \ inetpub \ wwwroot dans l'espoir qu'IIS renoncera à créer un répertoire physique * la suppression du répertoire physique de temps en temps si vous êtes sûr que votre site ne le fait pas ' Vous en avez vraiment besoin et cela vous dérange vraiment * ignorer aspnet_client * exécuter vous-même "ASPNET_regiis / c" si vous manquez le dossier et que vous en avez besoin

Plus important encore, en tant que développeur, vous devez clairement comprendre et documenter les dépendances de vos applications sur le répertoire aspnet_client, et vous assurer que votre procédure d'installation contient des instructions pertinentes pour vous assurer que le répertoire existe. Cependant, vous ne devriez probablement pas prendre la peine de fournir le répertoire dans le cadre de votre application Web ou de votre site Web emballé - comment pourriez-vous le faire pour chaque version du framework .NET que le serveur verra pendant la durée de vie de votre application?!

Quelques liens sur lesquels je reviendrai plus tard:

David Bullock
la source
donc si vous ajoutez le dossier aspnet_client sous wwwroot, son contenu sera copié dans chaque application Web que vous installez, je suppose
George Birbilis
8

Il contient également certaines icônes et scripts nécessaires au bon fonctionnement des rapports Crystal, même dans les versions ultérieures à 1.1


la source
Yah, j'ai découvert cela à la dure. J'ai déplacé notre instance de Ripplestone d'un répertoire virtuel sous le site Web par défaut vers son propre site Web, et tout a commencé à devenir bizarre dans Ripplestone. J'ai regardé la console javascript et j'ai vu qu'elle cherchait des éléments sous C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13 Je ne sais pas si c'était la bonne chose à faire ou non, mais j'ai juste copié tout le dossier aspnet_client de la racine vers le répertoire dans lequel vivait mon instance de Ripplestone.
Adam Nofsinger
3

Le dossier sert généralement à stocker le Javascript côté client, qu'ASP.NET utilise pour des choses comme la validation.

Il devrait être sûr de supprimer.

JamesSugrue
la source
1

Je pensais que j'ajouterais ceci ici car c'est le lien vers lequel je continuais d'être dirigé lorsque j'ai recherché cette question sur Google. Apparemment, avec .NET 4.0 et plus récent, ce dossier n'est plus nécessaire et peut être supprimé sans problème.

David
la source
0

Si vous utilisez Installshield pour configurer le site Web ASP.net, sachez que cette fonctionnalité était présente dans Installshield 2010 et est manquante dans Installshield 2012. Installshield 2010 contre 2012

Vishnu Prasanth
la source
Certaines fonctionnalités ne sont pas présentes dans IS2010. Essayez plus de versions précédentes.
Vishnu Prasanth