Thư mục aspnet_client trong cấu trúc IIS là gì?


108

Tôi nhận thấy rằng thường có một thư mục aspnet_client trong cấu trúc thư mục web IIS tiêu chuẩn. Cái này dùng để làm gì? Nó có cần thiết không?

Câu trả lời:


91

Trong .NET 1.1 ngày trở về trước, thư mục này đã cung cấp cho ASP.NET hỗ trợ JavaScript cho các điều khiển xác thực và chức năng khác. Nếu bạn không có trang web .NET 1.1 hoặc cũ hơn đang chạy, bạn nên xóa nó một cách an toàn. Tôi sẽ đổi tên nó trước để đảm bảo nó không gây ra bất kỳ vấn đề nào.


15
Nó xuất hiện để nhắc nhở bạn làm thế nào để không làm những việc như vậy nữa ... :)
Ostati

Ngay cả khi bạn đã không sử dụng .Net 1.1 ngày, bạn vẫn có thể sử dụng Crystal Reports, điều đó rất tiếc vẫn sử dụng thư mục được đề cập (và có lẽ cũng có phần mềm khác có cùng hành vi). Vì vậy, ít nhất, thực hiện sao lưu trước khi xóa thư mục
Vadim Levkovsky

66

Ngoài những gì những người khác đã nói, nó thường được tạo bởi công cụ aspnet_regiis, có thể được chạy (lại) bởi những thứ như Windows Update / AddRemove Windows components / IIS. Vì vậy, đôi khi ngay cả khi bạn xóa nó, nó có thể quay lại một cách ngẫu nhiên. Có thể có một cách để ngăn chặn hành vi này, nhưng tôi đã không tìm thấy nó (có thể thay đổi phiên bản ứng dụng thành .NET 2 sẽ thực hiện được).

Vì vậy, trừ khi bạn đang sử dụng các tính năng nhất định của .NET 1.0 / 1.1 (xác thực, Điều hướng thông minh, v.v.), bạn có thể xóa nó mà không gặp bất kỳ sự cố nào, chỉ cần đừng quá ngạc nhiên nếu nó quay trở lại!


28
Tôi thấy nó quay trở lại định kỳ. Điều khó chịu nhất về nó là mỗi khi nó hoạt động trở lại, nó lại phá vỡ WebDeploy vì tài khoản đang chạy không có quyền truy cập để xóa thư mục aspnet_client đã tạo!
Russ Cam

5
@RussCam Tôi chính xác gặp vấn đề tương tự. Nó phá vỡ WebDeploy vì lý do tương tự. Có ai tìm cách ngăn thư mục này được tạo ngẫu nhiên không?
tugberk

4
Tôi vừa mới cài đặt DotNet Framework 4.5 một cách ngây thơ và một thời gian ngắn sau việc triển khai WebDeploy của chúng tôi (được kích hoạt thông qua TeamCity) đã bị hỏng vì lý do CÙNG. Thư mục darn đã quay trở lại sau khi cài đặt 4.5. Ai đó, làm ơn dừng lại.
Michael12345

2
Bây giờ tôi đã thực sự sử dụng để thêm các thư mục này vào gói triển khai của chúng tôi để TeamCity không cố gắng xóa chúng. Có vẻ như nó đang làm ô nhiễm cơ sở mã của chúng tôi, nhưng hy vọng sẽ ngăn chặn cuộc tranh giành quyền lực giữa ASP.NET và việc triển khai ứng dụng của chúng tôi.
Michael12345

1
Tôi cũng thực sự khó chịu vì thư mục này quay lại liên tục, chúng tôi không có trang web asp.net 1.x, và dường như mọi bản cập nhật windows tự động đều đặt thư mục đẫm máu này trong mọi trang web nên phá vỡ tất cả các triển khai web của tôi. Tôi đồng ý với @ Michael12345 rằng không phải là giải pháp tuyệt vời để thêm các thư mục vô dụng vào SC chỉ để làm cho các triển khai tiếp tục hoạt động và không cần phải sửa theo cách thủ công vào thứ Hai hàng tuần sau khi cập nhật chiến thắng vào cuối tuần, hãy thêm lại nó vào từng trang web (với các lỗi ACL không chính xác) . Làm phiền !
MemeDeveloper

15

aspnet_client là một thư mục cho "các tài nguyên phải được cung cấp qua HTTP, nhưng được cài đặt trên cơ sở từng máy chủ, thay vì trên cơ sở từng ứng dụng".

Một số cách sử dụng của aspnet_client bao gồm lưu trữ tài nguyên (ví dụ: JavaScript, hình ảnh) cho:

  • JavaScript cho ASP.NET Web Forms kiểm soát khi sử dụng xác thực phía máy khách (có vẻ như chủ yếu để xử lý các trình duyệt cũ hơn như IE5)
  • ASP.NET 2.0 (cho đến khi ở khuôn khổ 4.0) cho 'Chủ đề toàn cầu' (toàn cầu cho tất cả các trang web trên một máy chủ, nghĩa là)
  • một số phiên bản của Crystal Reports

Có thể sẽ có / sẽ sử dụng thêm (ab) thư mục này trong tương lai. Không cần phải nói, vì nó chứa những thứ "cần thiết để ứng dụng chạy chính xác" nhưng "không được ứng dụng triển khai", nó sẽ vẫn là một cơn ác mộng cho cả nhà phát triển và quản trị viên hệ thống.

Có vẻ như 'nguyên mẫu' cho nội dung của thư mục nằm trong C: \ inetpub \ wwwroot \, và có vẻ hợp lý khi giả sử rằng nếu bất kỳ trang web IIS nào thiếu tài nguyên / aspnet_client, thì IIS sẽ cố gắng thực hiện đúng và ... phương sách cuối cùng ... tạo một thư mục vật lý trong thư mục gốc của trang web và sao chép các tệp vào đó. Có vẻ như IIS sẽ thực hiện điều này ít nhất là khi "ASPNET_regiis / c" được gọi đến một máy chủ nhất định - điều này có thể tự động xảy ra ở một số thời điểm quan trọng ... như khi các bản cập nhật khung công tác .NET được áp dụng cho máy chủ có vai trò IIS.

Các chiến lược để xử lý thư mục aspnet_client bao gồm: * chỉ định một thư mục ảo được ánh xạ tới C: \ inetpub \ wwwroot với hy vọng rằng IIS sẽ từ bỏ việc tạo một thư mục vật lý * thỉnh thoảng xóa thư mục vật lý nếu bạn chắc chắn rằng trang web của mình không ' không cần nó và nó thực sự làm phiền bạn * bỏ qua aspnet_client * tự chạy "ASPNET_regiis / c" nếu bạn đang thiếu thư mục và cần nó

Có thể là quan trọng nhất, với tư cách là nhà phát triển, bạn nên hiểu rõ ràng và ghi lại các phụ thuộc của ứng dụng vào thư mục aspnet_client và đảm bảo rằng quy trình cài đặt của bạn có các hướng dẫn liên quan để đảm bảo rằng thư mục tồn tại. Tuy nhiên, có lẽ bạn không nên thực sự cung cấp thư mục như một phần của ứng dụng web đóng gói hoặc trang web của mình - làm thế nào bạn có thể thực hiện điều này cho từng phiên bản .NET framework mà máy chủ sẽ thấy trong suốt thời gian ứng dụng của bạn ?!

Một số liên kết tôi sẽ quay lại sau:


vì vậy nếu bạn thêm thư mục aspnet_client dưới wwwroot nội dung của nó sẽ được sao chép vào mỗi ứng dụng web bạn cài đặt Tôi đoán
George Birbilis

8

Nó cũng có một số biểu tượng và tập lệnh nhất định cần thiết để các báo cáo pha lê chạy đúng cách ngay cả trong các phiên bản sau 1.1


Yah, tìm ra điều này một cách khó khăn. Tôi đã chuyển phiên bản Ripplestone của chúng tôi từ một thư mục ảo trong Trang web mặc định sang trang web riêng của nó và mọi thứ bắt đầu trở nên kỳ lạ trong Ripplestone. Tôi nhìn vào bảng điều khiển javascript và thấy rằng nó đang tìm kiếm nội dung trong C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13 Không chắc đó có phải là điều cần làm hay không, nhưng tôi vừa sao chép toàn bộ thư mục aspnet_client từ thư mục gốc vào thư mục mà phiên bản Ripplestone của tôi đã sử dụng.
Adam Nofsinger

3

Thư mục này thường để lưu trữ Javascript phía máy khách, mà ASP.NET sử dụng cho những thứ như xác thực.

Nó sẽ được an toàn để xóa.


1

Hình Tôi muốn thêm điều này ở đây vì đây là liên kết mà tôi tiếp tục được chuyển hướng đến khi tôi truy cập vào câu hỏi này. Rõ ràng với .NET 4.0 và mới hơn, thư mục này không còn cần thiết nữa và có thể bị xóa mà không gặp vấn đề gì.


0

Nếu bạn đang sử dụng Installshield để cấu hình trang web ASP.net, hãy lưu ý rằng tính năng này đã có trong Installshield 2010 và bị thiếu trong Installshield 2012. Installshield 2010 Vs 2012


Một số tính năng không có trong IS2010. Thử thêm các phiên bản trước.
Vishnu Prasanth
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.