Thư mục App_Data được sử dụng trong Visual Studio là gì?


156

Khi tạo một ứng dụng ASP.NET mới trong Visual Studio, một vài tệp và thư mục sẽ được tạo tự động. Một trong những thư mục đó được gọi App_Data.

Ngoài ra khi xuất bản một trang web bằng cách chọn tùy chọn menu, Build->Publishmột hộp kiểm có sẵn Include files from the App_Data folder.

Tôi có đúng không khi cho rằng các tệp được đặt trong tệp này và các thư mục con của nó sẽ không thể truy cập được qua web? Ví dụ, liệu có an toàn khi đặt vào tài nguyên thư mục mà tôi chỉ có ý định sử dụng bởi mã ứng dụng không?

Mục đích sử dụng thực sự của App_Datathư mục là gì?

BIÊN TẬP:

Cảm ơn bạn vì tất cả các câu trả lời. Từ các câu trả lời nhận được cho đến nay tôi quan tâm chủ yếu ở hai điểm được đề cập:

  1. App_Data về cơ bản là một điểm lưu trữ để lưu trữ dữ liệu dựa trên tệp
  2. Nó không thể xem được trên web và là nơi để ứng dụng web lưu trữ và đọc dữ liệu từ

Ai đó có thể chỉ định làm thế nào "không thể xem được trên web" được đảm bảo? Tôi có thể dựa vào thực tế đó khi thực hiện triển khai tiêu chuẩn hay tôi cũng cần kiểm tra một số cài đặt IIS trên máy chủ.

Trong trường hợp khi tôi có một tập hợp các tệp pdf mà tôi muốn chỉ có thể truy cập được từ ứng dụng. Thư mục App_Data sẽ là nơi thích hợp để sử dụng hay tôi nên tạo một thư mục riêng và đặt IIS theo cách thủ công để đảm bảo rằng Web không thể truy cập được?

Câu trả lời:


119

App_Data về cơ bản là một điểm lưu trữ cho các kho lưu trữ dữ liệu dựa trên tệp (trái ngược với kho lưu trữ cơ sở dữ liệu máy chủ SQL chẳng hạn). Ví dụ, một số trang web đơn giản sử dụng nội dung đó được lưu trữ dưới dạng XML, điển hình là chi phí lưu trữ cho một DB đắt đỏ.


8
Cảm ơn annakata cho câu trả lời này. Tôi nghĩ rằng điểm quan trọng cần thêm là nội dung của App_Data theo mặc định không thể xem được trên web như được đề cập bởi JaredPar. và cũng như bạn đã nhận xét "hành vi này có thể được sửa đổi từ * .config
omephandlers

Thư mục app_data có chứa các tham chiếu đến các dịch vụ web cục bộ không? Ứng dụng web của tôi hoạt động tốt trong .net F5 chạy. Nhưng các dịch vụ web không hoạt động sau khi đóng gói và triển khai trong ISS ... :(
bonCodigo

1
Ngoài ra thư mục này được sử dụng để lưu trữ một tệp cơ sở dữ liệu cục bộ.
Andrei Khotko

Một điều chưa được đề cập là IIS khởi động lại quy trình web khi tệp bị thay đổi, nhưng App_Data bị loại trừ khỏi điều này!
Peter

43

trong IIS, tô sáng máy, nhấp đúp vào "Lọc yêu cầu", mở tab "Phân đoạn ẩn". "App_Data" được liệt kê ở đó dưới dạng một thư mục bị hạn chế. Vâng tôi biết chủ đề này thực sự cũ, nhưng điều này vẫn còn áp dụng.


25

Mục đích sử dụng của App_data là lưu trữ dữ liệu ứng dụng cho quy trình web để truy cập. Nó không thể xem được bởi web và là nơi để ứng dụng web lưu trữ và đọc dữ liệu từ đó.


7
Không chỉ "không nên", mọi thứ trong thư mục đó đều bị chặn bởi ASP.NET
John Sheehan

@ John, tôi có ấn tượng rằng có nhiều cách để "thay đổi" hành vi đó. Vâng, chắc chắn là xấu xa để làm như vậy nhưng tôi không biết mức độ phổ biến hay không
JaredPar

Làm thế nào mà "không thể xem" đạt được? Thư mục App_data có cài đặt cụ thể trong IIS không?
padn

@padn, tôi không chắc chắn 100% về ngăn xếp nhưng nó là vỏ bọc đặc biệt trong IIS hoặc ngăn xếp Asp.Net. msdn.microsoft.com/en-us/l Library / ex526337.aspx
JaredPar

2
iirc hành vi này có thể được sửa đổi từ * .config omephandlers
annakata

15

Đây là nơi để đặt một cơ sở dữ liệu nhúng, chẳng hạn như Sql Server Express, Access hoặc SQLite.


1
Hoặc bất kỳ dữ liệu nào khác mà trang web có thể sử dụng như, ví dụ: các tệp XML (như danh sách các quốc gia / quốc gia / v.v.)
John Sheehan

1
Là một cơ sở dữ liệu chỉ sau đó? Tôi có thể nói một số ví dụ về các tệp pdf mà tôi muốn truy cập chỉ nghĩ mã, ví dụ: sử dụng phương thức Feedback.TransmitFile không?
padn

5
bất cứ điều gì - khái niệm dữ liệu không chỉ định kiểu hoặc định dạng
annakata

13

Thư mục App_Data là một thư mục mà quá trình nhân viên asp.net của bạn cũng có quyền sytem tệp, nhưng không được xuất bản qua máy chủ web.

Ví dụ: chúng tôi sử dụng nó để cập nhật CSV cục bộ của biểu mẫu liên hệ với chúng tôi . Nếu phương pháp ưa thích của email không thành công hoặc bất kỳ truy vấn nào về nguồn dữ liệu là bắt buộc, các tệp App_Data sẽ ở đó.

Nó không lý tưởng, nhưng nó là một dự phòng tốt.


10

Từ tài liệu về cấu trúc thư mục dự án ASP.NET Web trong MSDN:

Bạn có thể giữ các tệp của dự án Web của bạn trong bất kỳ cấu trúc thư mục nào thuận tiện cho ứng dụng của bạn. Để làm việc với ứng dụng của bạn dễ dàng hơn, ASP.NET dành một số tên tệp và thư mục nhất định mà bạn có thể sử dụng cho các loại nội dung cụ thể.

App_Data chứa các tệp dữ liệu ứng dụng bao gồm các tệp cơ sở dữ liệu .mdf, tệp XML và các tệp lưu trữ dữ liệu khác. Thư mục App_Data được ASP.NET sử dụng để lưu trữ cơ sở dữ liệu cục bộ của ứng dụng, chẳng hạn như cơ sở dữ liệu để duy trì thông tin thành viên và vai trò. Để biết thêm thông tin, hãy xem Giới thiệu về Tư cách thành viênHiểu quản lý vai trò .


7

Mục đích chính là để giữ (các) tệp cơ sở dữ liệu của ứng dụng của bạn.

Và không có điều này sẽ không thể truy cập từ web theo mặc định.


7

Chúng tôi sử dụng nó như một vùng lưu trữ tạm thời cho các tệp csv đã tải lên. Sau khi tải lên, một phương thức ajax xử lý và xóa tệp.


6

Mục đích sử dụng cho App_Data là lưu trữ tệp liên quan đến cơ sở dữ liệu. Thông thường tệp SQL Server Express .mdf.

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.