Wozu dient der Ordner aspnet_client in der IIS-Struktur?

108

Ich stelle fest, dass es häufig einen aspnet_client-Ordner unter der Standardstruktur des IIS-Webordners gibt. Wofür wird das verwendet? Wird es gebraucht?

Kerl
quelle

Antworten:

91

In .NET 1.1 Tagen und früher stellte dieser Ordner ASP.NET seine JavaScript-Unterstützung für die Validierungssteuerelemente und andere Funktionen zur Verfügung. Wenn auf einer .NET 1.1-Site oder älter keine ausgeführt wird, sollte das Löschen sicher sein. Ich würde es zuerst umbenennen, um sicherzustellen, dass es keine Probleme verursacht.

Duncan
quelle
15
Es zeigt sich, um Sie daran zu erinnern, wie man solche Dinge nicht mehr macht ... :)
Ostati
Selbst wenn Sie jetzt nicht mehr in .Net 1.1 sind, können Sie Crystal Reports verwenden, die leider immer noch den genannten Ordner verwenden (und wahrscheinlich gibt es auch andere Software mit dem gleichen Verhalten). Machen Sie also zumindest ein Backup, bevor Sie den Ordner löschen
Vadim Levkovsky
66

Zusätzlich zu dem, was andere gesagt haben, wird es normalerweise vom Tool aspnet_regiis erstellt, das von Windows Update / AddRemove Windows-Komponenten / IIS (erneut) ausgeführt werden kann. Selbst wenn Sie es löschen, kann es manchmal zufällig zurückkommen. Möglicherweise gibt es eine Möglichkeit, dieses Verhalten zu stoppen, aber ich habe es nicht gefunden (möglicherweise würde eine Änderung der Anwendungsversion in .NET 2 dies tatsächlich tun).

Wenn Sie also bestimmte Funktionen von .NET 1.0 / 1.1 (Validierung, Smart Navigation usw.) nicht verwenden, können Sie es problemlos löschen. Seien Sie nicht zu überrascht, wenn es zurückkommt!

spmason
quelle
28
Ich finde, es kommt regelmäßig zurück. Das Frustrierendste daran ist, dass WebDeploy jedes Mal, wenn es zurückkommt, unterbrochen wird, da das Konto, unter dem es ausgeführt wird, keinen Zugriff zum Löschen des erstellten Ordners aspnet_client hat!
Russ Cam
5
@RussCam Ich habe genau das gleiche Problem. Es bricht das WebDeploy aus dem gleichen Grund. Hat jemand eine Möglichkeit gefunden, die zufällige Erstellung dieses Ordners zu stoppen?
Tugberk
4
Ich habe DotNet Framework 4.5 nur unschuldig installiert und kurze Zeit später brach unsere WebDeploy-Bereitstellung (ausgelöst über TeamCity) aus demselben Grund ab. Der verdammte Ordner kam nach der Installation von 4.5 wieder zurück. Jemand, bitte lass es aufhören.
Michael12345
2
Ich habe jetzt darauf zurückgegriffen, diese Ordner tatsächlich zu unserem Bereitstellungspaket hinzuzufügen, damit TeamCity nicht versucht, sie zu entfernen. Es fühlt sich an, als würde es unsere Codebasis verschmutzen, aber hoffentlich wird der Machtkampf zwischen ASP.NET und unserer App-Bereitstellung gestoppt.
Michael12345
1
Ich ärgere mich auch ernsthaft darüber, dass dieser Ordner die ganze Zeit zurückkommt. Wir haben keine asp.net 1.x-Sites, und dennoch legt anscheinend jedes automatische Windows-Update diesen blutigen Ordner auf jede Site, sodass alle meine Webbereitstellungen unterbrochen werden. Ich stimme @ Michael12345 zu, dass es keine großartige Lösung ist, nutzlose Ordner zu SC hinzuzufügen, damit die Bereitstellungen weiterhin funktionieren, und nicht jeden Montag nach den Gewinnaktualisierungen des Wochenendes manuell repariert werden muss. Fügen Sie sie zu jeder Site zurück (mit falschen ACL-Berechtigungen). . Nervig !
MemeDeveloper
15

aspnet_client ist ein Ordner für "Ressourcen, die über HTTP bereitgestellt werden müssen, aber auf Serverbasis und nicht auf Anwendungsbasis installiert werden".

Einige der Verwendungszwecke von aspnet_client umfassen das Speichern von Ressourcen (z. B. JavaScript, Bilder) für:

  • JavaScript für ASP.NET Web Forms-Steuerelemente bei Verwendung der clientseitigen Validierung (hauptsächlich zur Handhabung älterer Browser wie IE5, wie es scheint)
  • ASP.NET 2.0 (bis Framework 4.0) für 'Globale Themen' (global für alle Sites auf einem Server)
  • Einige Versionen von Crystal Reports

Es gibt / wird wahrscheinlich in Zukunft weitere (ab) Verwendungen dieses Ordners geben. Es ist unnötig zu erwähnen, dass es sowohl für Entwickler als auch für Systemadministratoren ein Albtraum bleibt, da es Dinge enthält, die "für die ordnungsgemäße Ausführung der Anwendung erforderlich sind", aber "nicht von der Anwendung bereitgestellt werden sollen".

Es scheint, dass sich der 'Prototyp' für den Inhalt des Ordners in C: \ inetpub \ wwwroot \ befindet, und es scheint vernünftig anzunehmen, dass IIS versuchen wird, das Richtige zu tun, wenn einer bestimmten IIS-Website eine / aspnet_client-Ressource fehlt und ... als letzten Ausweg ... einen physischen Ordner im Stammordner der Website erstellen und die Dateien dort kopieren. Es scheint, dass IIS dies zumindest tut, wenn "ASPNET_regiis / c" auf einem bestimmten Server aufgerufen wird - was wahrscheinlich an einigen kritischen Punkten automatisch auftritt ... beispielsweise wenn .NET Framework-Updates auf einen Server angewendet werden, der die IIS-Rolle hat.

Zu den Strategien für den Umgang mit dem Verzeichnis aspnet_client gehören: * Angabe eines virtuellen Verzeichnisses, das C: \ inetpub \ wwwroot zugeordnet ist, in der Hoffnung, dass IIS auf die Erstellung eines physischen Verzeichnisses verzichtet * das Löschen des physischen Verzeichnisses von Zeit zu Zeit, wenn Sie sicher sind, dass Ihre Site dies nicht tut. ' Ich brauche es nicht und es stört dich wirklich * aspnet_client zu ignorieren * "ASPNET_regiis / c" selbst auszuführen, wenn du den Ordner vermisst und es brauchst

Am wichtigsten ist wahrscheinlich, dass Sie als Entwickler die Abhängigkeiten Ihrer Anwendungen vom Verzeichnis aspnet_client klar verstehen und dokumentieren und sicherstellen, dass Ihre Installationsprozedur relevante Anweisungen enthält, um sicherzustellen, dass das Verzeichnis vorhanden ist. Mühe Allerdings sollten Sie wahrscheinlich nicht wirklich liefern das Verzeichnis als Teil Ihrer verpackten Web - Anwendung oder Website - wie könnte man dies möglicherweise tun für jede Version des .NET - Frameworks , die der Server die Lebensdauer Ihrer Anwendung sehen über wird ?!

Einige Links, auf die ich später zurückkommen werde:

David Bullock
quelle
Wenn Sie also den Ordner aspnet_client unter wwwroot hinzufügen, wird der Inhalt in jede von Ihnen installierte Web-App kopiert
George Birbilis
8

Es enthält auch bestimmte Symbole und Skripte, die erforderlich sind, damit Crystal Reports-Berichte auch in Versionen nach 1.1 ordnungsgemäß ausgeführt werden können


quelle
Yah, fand das auf die harte Tour heraus. Ich habe unsere Ripplestone-Instanz von einem virtuellen Verzeichnis unter der Standardwebsite auf eine eigene Website verschoben, und in Ripplestone begann alles seltsam zu werden. Ich habe auf die Javascript-Konsole geschaut und festgestellt, dass unter unter Ich bin C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13 mir nicht sicher, ob es das Richtige ist oder nicht, aber ich habe einfach den gesamten Ordner aspnet_client vom Stammverzeichnis in das Verzeichnis kopiert, in dem meine Ripplestone-Instanz lebte.
Adam Nofsinger
3

Der Ordner dient normalerweise zum Speichern von clientseitigem Javascript, das ASP.NET beispielsweise für die Validierung verwendet.

Das Löschen sollte sicher sein.

JamesSugrue
quelle
1

Ich dachte, ich würde dies hier hinzufügen, da dies der Link ist, auf den ich immer wieder verwiesen wurde, als ich diese Frage googelte. Anscheinend wird dieser Ordner mit .NET 4.0 und neuer nicht mehr benötigt und kann ohne Probleme entfernt werden.

David
quelle
0

Wenn Sie Installshield zum Konfigurieren der ASP.net-Website verwenden, beachten Sie, dass diese Funktion in Installshield 2010 vorhanden war und in Installshield 2012 fehlt. Installshield 2010 Vs 2012

Vishnu Prasanth
quelle
Einige Funktionen sind in IS2010 nicht vorhanden. Versuchen Sie es mit früheren Versionen.
Vishnu Prasanth