2009-02-09 58 views
132

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

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

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

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

EDIT:

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

  1. App_Data is essentially a storage point for file-based data store
  2. It should not be viewable by the web and is a place for the web app to store and read data from

một người nào đó có thể xác định như thế nào "không thể xem được bởi các trang web" được đảm bảo? Tôi có thể dựa vào thực tế đó khi thực hiện triển khai 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 tôi có một tập hợp các tệp pdf mà tôi muốn truy cập chỉ 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 nó không thể truy cập được bằng Web?

Trả lời

94

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

+6

Cảm ơn annakata cho câu trả lời này. Tôi nghĩ đ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 httphandlers" – padn

+0

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

+0

Cũng thư mục này được sử dụng để lưu trữ một tệp cơ sở dữ liệu cục bộ. –

13

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

+0

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

+1

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

+4

mọi thứ - khái niệm dữ liệu không chỉ định loại tệp hoặc định dạng – annakata

21

Mục đích sử dụng của App_data là lưu trữ dữ liệu ứng dụng cho quá trình web để bắt đầu. Không thể xem được trang web và là nơi để ứng dụng web lưu trữ và đọc dữ liệu từ đó.

+5

Không chỉ "không nên", bất kỳ thứ gì trong thư mục đó bị chặn không được phục vụ bởi ASP.NET –

+0

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

+0

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

5

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

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

5

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 là các tệp .mdf của SQL Server Express.

12

Thư mục App_Data là một thư mục mà quy trình nhân viên asp.net của bạn cũng có các quyền sytem, ​​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 liên hệ với chúng tôi biểu mẫu. Nếu phương thức ưa thích của email không thành công hoặc bất kỳ truy vấn nào của nguồn dữ liệu là bắt buộc, các tệp App_Data có ở đó.

Nó không lý tưởng, nhưng đó là một sự giảm sút tốt.

6

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

33

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

6

Từ các tài liệu về ASP.NET Web Project Folder Structure trong MSDN:

Bạn có thể giữ các tập tin dự án Web của bạn trong bất kỳ cấu trúc thư mục đó là thuận lợi cho ứng dụng của bạn. Để làm việc với ứng dụng của bạn trở nên dễ dàng hơn, ASP.NET bảo lưu 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 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 là đượ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ên và hiểu vai trò Quản lý.

Để biết thêm thông tin, hãy xem Introduction to MembershipUnderstanding Role Management.

Các vấn đề liên quan