A cosa serve la cartella aspnet_client nella struttura IIS?


108

Ho notato che c'è spesso una cartella aspnet_client sotto la struttura di cartelle web IIS standard. A cosa serve? È necessario?

Risposte:


91

Nei giorni .NET 1.1 e prima, questa cartella forniva ad ASP.NET il supporto JavaScript per i controlli di convalida e altre funzionalità. Se non si dispone di un sito .NET 1.1 o precedente in esecuzione, dovrebbe essere sicuro eliminarlo. Lo rinominerei prima per assicurarmi che non causi problemi.


15
Si presenta per ricordarvi come non fare più cose del genere ... :)
Ostati

Anche se sei ormai fuori dai giorni .Net 1.1 puoi utilizzare Crystal Reports, che purtroppo utilizza ancora la cartella citata (e probabilmente ci sono anche altri software con lo stesso comportamento). Quindi, almeno,
esegui il

66

Oltre a ciò che altri hanno detto, di solito viene creato dallo strumento aspnet_regiis, che può essere (ri) eseguito da cose come Windows Update / AddRemove Windows components / IIS. Quindi a volte anche se lo elimini, può tornare in modo casuale. Potrebbe esserci un modo per fermare questo comportamento, ma non l'ho trovato (forse cambiare la versione dell'applicazione in .NET 2 lo farebbe effettivamente).

Quindi, a meno che tu non stia utilizzando alcune funzionalità di .NET 1.0 / 1.1 (convalida, navigazione intelligente, ecc.) Puoi eliminarlo senza problemi, ma non sorprenderti troppo se ritorna!


28
Trovo che ritorni periodicamente. La cosa più frustrante è che ogni volta che ritorna, interrompe WebDeploy poiché l'account con cui viene eseguito non ha accesso per eliminare la cartella aspnet_client creata!
Russ Cam

5
@RussCam Ho esattamente lo stesso problema. Si interrompe il WebDeploy per lo stesso motivo. Qualcuno ha trovato un modo per interrompere la creazione casuale di questa cartella?
tugberk

4
Ho appena installato innocentemente DotNet Framework 4.5 e poco tempo dopo la nostra distribuzione WebDeploy (attivata tramite TeamCity) si è interrotta per lo STESSO motivo. La cartella dannata è tornata di nuovo a seguito dell'installazione di 4.5. Qualcuno, per favore, fallo smettere.
Michael12345

2
Ora ho fatto ricorso ad aggiungere effettivamente queste cartelle al nostro pacchetto di distribuzione in modo che TeamCity non provi a rimuoverle. Sembra che stia inquinando la nostra base di codice, ma si spera che fermerà la lotta per il potere tra ASP.NET e la distribuzione della nostra app.
Michael12345

1
Sono anche seriamente infastidito dal fatto che questa cartella ritorni continuamente, non abbiamo siti asp.net 1.x, eppure apparentemente ogni aggiornamento automatico di Windows inserisce questa cartella insanguinata in ogni sito, quindi rompendo tutte le mie distribuzioni web. Sono d'accordo con @ Michael12345 sul fatto che non è un'ottima soluzione aggiungere cartelle inutili a SC solo per far sì che le distribuzioni continuino a funzionare e non è necessario ripararle manualmente ogni lunedì dopo gli aggiornamenti di vittoria del fine settimana aggiungerlo di nuovo a ogni sito (con perm ACL errati) . Fastidioso!
MemeDeveloper

15

aspnet_client è una cartella per le "risorse che devono essere servite tramite HTTP, ma sono installate in base al server, piuttosto che in base all'applicazione".

Alcuni degli usi di aspnet_client includono la memorizzazione di risorse (ad es. JavaScript, immagini) per:

  • JavaScript per i controlli Web Form ASP.NET quando si utilizza la convalida lato client (principalmente per gestire browser meno recenti come IE5, a quanto pare)
  • ASP.NET 2.0 (fino al framework 4.0) per 'Temi globali' (globale per tutti i siti su un server, cioè)
  • alcune versioni di Crystal Reports

Probabilmente ci sono / saranno ulteriori (ab) usi di questa cartella in futuro. Inutile dire che, poiché contiene cose che sono "necessarie per il corretto funzionamento dell'applicazione" ma che "non dovrebbero essere distribuite dall'applicazione", rimarrà un incubo sia per gli sviluppatori che per gli amministratori di sistema.

Sembra che il 'prototipo' per il contenuto della cartella sia in C: \ inetpub \ wwwroot \ e sembra ragionevole supporre che se un determinato sito Web IIS manca di una risorsa / aspnet_client, IIS proverà a fare la cosa giusta e ... come ultima risorsa ... creare una cartella fisica nella cartella principale del sito Web e copiare i file lì. Sembra che IIS lo farà almeno quando "ASPNET_regiis / c" viene richiamato su un determinato server, il che probabilmente si verifica automaticamente in alcuni momenti critici ... come quando gli aggiornamenti di .NET framework vengono applicati a un server che ha il ruolo IIS.

Le strategie per la gestione della directory aspnet_client includono: * specificare una directory virtuale mappata su C: \ inetpub \ wwwroot nella speranza che IIS rinunci a creare una directory fisica * eliminare la directory fisica di volta in volta se sei sicuro che il tuo sito non lo fa ' non ne hai bisogno e ti dà davvero fastidio * ignorare aspnet_client * eseguire "ASPNET_regiis / c" da soli se ti manca la cartella e ne hai bisogno

Probabilmente la cosa più importante, come sviluppatore, dovresti comprendere e documentare chiaramente le dipendenze delle tue applicazioni dalla directory aspnet_client e assicurarti che la tua procedura di installazione abbia le istruzioni pertinenti per assicurarti che la directory esista. Tuttavia, probabilmente non dovresti preoccuparti di fornire effettivamente la directory come parte dell'applicazione web o del sito web pacchettizzato - come potresti farlo per ogni versione del framework .NET che il server vedrà per tutta la durata della tua applicazione ?!

Alcuni link a cui tornerò in seguito:


quindi se aggiungi la cartella aspnet_client sotto wwwroot il suo contenuto verrà copiato su ogni app web che installi immagino
George Birbilis

8

Dispone inoltre di alcune icone e script necessari per il corretto funzionamento dei report Crystal anche nelle versioni successive alla 1.1


Sì, l'ho scoperto nel modo più duro. Ho spostato la nostra istanza di Ripplestone da una directory virtuale nel sito Web predefinito al proprio sito Web e tutto ha iniziato a funzionare in modo strano in Ripplestone. Ho guardato la console javascript e ho visto che stava cercando cose in C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13 Non sono sicuro se fosse la cosa giusta da fare o meno, ma ho appena copiato l'intera cartella aspnet_client dalla radice alla directory in cui viveva la mia istanza di Ripplestone.
Adam Nofsinger

3

La cartella è in genere per l'archiviazione di Javascript lato client, che ASP.NET utilizza per cose come la convalida.

Dovrebbe essere sicuro eliminarlo.


1

Ho pensato di aggiungerlo qui perché questo è il link a cui continuavo a essere indirizzato quando ho cercato su Google questa domanda. Apparentemente con .NET 4.0 e versioni successive questa cartella non è più necessaria e può essere rimossa senza problemi.


0

Se si utilizza InstallShield per configurare il sito Web ASP.net, tenere presente che questa funzionalità era presente in InstallShield 2010 e manca in InstallShield 2012. InstallShield 2010 contro 2012


Alcune funzionalità non sono presenti in IS2010. Prova altre versioni precedenti.
Vishnu Prasanth
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.