Do czego służy folder aspnet_client w strukturze usług IIS?


108

Zauważyłem, że w standardowej strukturze folderów sieci Web usług IIS często znajduje się folder aspnet_client. Do czego to służy? Czy to potrzebne?

Odpowiedzi:


91

W wersji .NET 1.1 i wcześniejszych ten folder zapewniał ASP.NET obsługę języka JavaScript w zakresie formantów sprawdzania poprawności i innych funkcji. Jeśli nie masz witryny .NET 1.1 lub starszej, usunięcie jej powinno być bezpieczne. Najpierw zmieniłbym nazwę, aby upewnić się, że nie powoduje żadnych problemów.


15
Pojawia się, aby przypomnieć ci, jak już nie robić takich rzeczy ... :)
Ostati

Nawet jeśli jesteś teraz poza .Net 1.1 dnia, możesz korzystać z Crystal Reports, który niestety nadal używa wspomnianego folderu (i prawdopodobnie istnieje również inne oprogramowanie o tym samym zachowaniu). Więc przynajmniej wykonaj kopię zapasową przed usunięciem folderu
Vadim Levkovsky

66

Oprócz tego, co powiedzieli inni, jest zwykle tworzony przez narzędzie aspnet_regiis, które może być (ponownie) uruchamiane przez takie rzeczy, jak Windows Update / AddRemove Windows Components / IIS. Więc czasami nawet jeśli go usuniesz, może wrócić losowo. Może istnieć sposób na zatrzymanie tego zachowania, ale go nie znalazłem (może zmiana wersji aplikacji na .NET 2 faktycznie by to zrobiła).

Więc jeśli nie korzystasz z niektórych funkcji .NET 1.0 / 1.1 (walidacja, inteligentna nawigacja itp.), Możesz go usunąć bez żadnych problemów, tylko nie zdziw się, jeśli wróci!


28
Uważam, że powraca okresowo. Najbardziej frustrujące jest to, że za każdym razem, gdy wraca, zrywa WebDeploy, ponieważ konto, na którym działa, nie ma dostępu do usunięcia utworzonego folderu aspnet_client!
Russ Cam

5
@RussCam Mam dokładnie ten sam problem. Z tego samego powodu przerywa WebDeploy. Czy ktoś znalazł sposób, aby zatrzymać losowe tworzenie tego folderu?
tugberk

4
Właśnie niewinnie zainstalowałem DotNet Framework 4.5, a niedługo później nasze wdrożenie WebDeploy (uruchomione przez TeamCity) zepsuło się z TEGO SAMEGO powodu. Folder darn powrócił ponownie w wyniku instalacji 4.5. Niech ktoś to powstrzyma.
Michael12345

2
Teraz uciekłem się do faktycznego dodania tych folderów do naszego pakietu wdrożeniowego, aby TeamCity nie próbował ich usunąć. Wydaje się, że zanieczyszcza naszą bazę kodu, ale mam nadzieję, że zatrzyma walkę o władzę między ASP.NET a wdrażaniem naszych aplikacji.
Michael12345

1
Jestem również poważnie zirytowany tym, że ten folder ciągle powraca, nie mamy witryn asp.net 1.x, a jednak wydaje się, że każda automatyczna aktualizacja systemu Windows umieszcza ten cholerny folder w każdej witrynie, co przerywa wszystkie moje wdrożenia internetowe. Zgadzam się z @ Michael12345, że dodawanie bezużytecznych folderów do SC tylko po to, aby wdrożenia nadal działały i nie wymagają ręcznego naprawiania w każdy poniedziałek po weekendowych aktualizacjach wygrywających, dodaj je z powrotem do każdej witryny (z nieprawidłowymi uprawnieniami ACL) . Denerwujący !
MemeDeveloper

15

aspnet_client to folder „zasobów, które muszą być obsługiwane za pośrednictwem protokołu HTTP, ale są instalowane dla poszczególnych serwerów, a nie dla poszczególnych aplikacji”.

Niektóre z zastosowań aspnet_client obejmują przechowywanie zasobów (np. JavaScript, obrazów) dla:

  • JavaScript dla kontrolek formularzy sieci Web ASP.NET podczas korzystania z walidacji po stronie klienta (wydaje się, że głównie do obsługi starszych przeglądarek, takich jak IE5)
  • ASP.NET 2.0 (do frameworka 4.0) dla „motywów globalnych” (czyli globalne dla wszystkich witryn na serwerze)
  • niektóre wersje Crystal Reports

Prawdopodobnie będą / będą dalsze (nad) zastosowania tego folderu w przyszłości. Nie trzeba dodawać, że ponieważ zawiera elementy, które są „niezbędne do prawidłowego działania aplikacji”, ale które „nie powinny być wdrażane przez aplikację”, pozostanie koszmarem zarówno dla programistów, jak i administratorów systemu.

Wydaje się, że `` prototyp '' zawartości folderu znajduje się w C: \ inetpub \ wwwroot \ i rozsądne wydaje się założenie, że jeśli w dowolnej witrynie usług IIS brakuje zasobu / aspnet_client, usługi IIS spróbują zrobić to, co należy i ... w ostateczności ... utwórz folder fizyczny w folderze głównym serwisu WWW i skopiuj tam pliki. Wydaje się, że IIS zrobi to przynajmniej wtedy, gdy "ASPNET_regiis / c" zostanie wywołane na danym serwerze - co prawdopodobnie następuje automatycznie w niektórych krytycznych momentach ... np. Gdy aktualizacje .NET Framework są stosowane na serwerze, który pełni rolę IIS.

Strategie obsługi katalogu aspnet_client obejmują: * określenie katalogu wirtualnego zamapowanego na C: \ inetpub \ wwwroot w nadziei, że usługi IIS zrezygnują z tworzenia katalogu fizycznego * usuwanie katalogu fizycznego od czasu do czasu, jeśli masz pewność, że Twoja witryna tego nie robi nie jest to potrzebne i naprawdę przeszkadza * ignorowanie aspnet_client * samodzielne uruchamianie „ASPNET_regiis / c”, jeśli brakuje folderu i go potrzebujesz

Prawdopodobnie najważniejsze jest to, że jako programista powinieneś jasno zrozumieć i udokumentować zależności aplikacji w katalogu aspnet_client i upewnić się, że procedura instalacji zawiera odpowiednie instrukcje, aby upewnić się, że katalog istnieje. Jednak prawdopodobnie nie powinieneś zawracać sobie głowy dostarczaniem katalogu jako części spakowanej aplikacji internetowej lub witryny internetowej - jak możesz to zrobić dla każdej wersji platformy .NET, którą serwer będzie widział przez cały okres użytkowania aplikacji ?!

Kilka linków, do których wrócę później:


więc jeśli dodasz folder aspnet_client pod wwwroot, jego zawartość zostanie skopiowana do każdej zainstalowanej aplikacji internetowej, jak sądzę
George Birbilis,

8

Zawiera również pewne ikony i skrypty, które są wymagane, aby raporty crystal działały poprawnie nawet w wersjach późniejszych niż 1.1


Tak, odkryłem to na własnej skórze. Przeniosłem naszą instancję Ripplestone z katalogu wirtualnego w domyślnej witrynie internetowej do jej własnej witryny internetowej i wszystko zaczęło dziwnie działać w Ripplestone. Spojrzałem na konsolę javascript i zobaczyłem, że szukała rzeczy w obszarze C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13 Nie jestem pewien, czy to było właściwe , czy nie, ale właśnie skopiowałem cały folder aspnet_client z katalogu głównego do katalogu, w którym mieszkała moja instancja Ripplestone.
Adam Nofsinger

3

Folder zwykle służy do przechowywania skryptów JavaScript po stronie klienta, których ASP.NET używa do takich celów, jak sprawdzanie poprawności.

Usunięcie powinno być bezpieczne.


1

Pomyślałem, że dodam to tutaj, ponieważ jest to link, do którego byłem kierowany, kiedy szukałem tego pytania w Google. Najwyraźniej w .NET 4.0 i nowszych ten folder nie jest już potrzebny i można go usunąć bez problemu.


0

Jeśli używasz programu Installshield do konfigurowania witryny ASP.net, pamiętaj, że ta funkcja była obecna w programie Installshield 2010 i jej brakuje w programie Installshield 2012. Installshield 2010 Vs 2012


Niektóre funkcje nie są obecne w IS2010. Wypróbuj więcej poprzednich wersji.
Vishnu Prasanth
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.