Untuk apa folder App_Data digunakan dalam Visual Studio?

156

Saat membuat aplikasi ASP.NET baru di Visual Studio, beberapa file dan folder dibuat secara otomatis. Salah satu folder itu disebut App_Data.

Juga ketika menerbitkan situs web dengan memilih opsi menu Build->Publishkotak centang tersedia Include files from the App_Data folder.

Apakah saya benar berasumsi bahwa file yang dimasukkan ke file ini dan sub-foldernya tidak akan dapat diakses melalui web? Sebagai contoh, apakah aman untuk memasukkan sumber daya folder yang hanya ingin digunakan oleh kode aplikasi?

Apa tujuan sebenarnya dari penggunaan App_Datafolder?

EDIT:

Terima kasih atas semua jawabannya. Dari jawaban yang diterima sejauh ini saya tertarik pada dua hal yang disebutkan:

  1. App_Data pada dasarnya adalah titik penyimpanan untuk penyimpanan data berbasis file
  2. Seharusnya tidak dapat dilihat oleh web dan merupakan tempat bagi aplikasi web untuk menyimpan dan membaca data

Apakah seseorang dapat menentukan bagaimana "tidak dapat dilihat oleh web" dipastikan? Dapatkah saya mengandalkan fakta itu ketika melakukan penyebaran standar, atau apakah saya perlu memeriksa beberapa pengaturan IIS di server juga.

Dalam situasi ketika saya memiliki satu set file pdf yang saya inginkan hanya dapat diakses dari aplikasi. Apakah folder App_Data menjadi tempat yang tepat untuk digunakan, atau haruskah saya membuat folder terpisah dan secara manual mengatur IIS untuk memastikan bahwa itu tidak dapat diakses oleh Web?

padn
sumber

Jawaban:

119

App_Data pada dasarnya adalah titik penyimpanan untuk penyimpanan data berbasis file (sebagai lawan dari toko database SQL server misalnya). Beberapa situs sederhana memanfaatkannya untuk konten yang disimpan sebagai XML misalnya, biasanya di mana biaya hosting untuk DB mahal.

annakata
sumber
8
Terima kasih annakata untuk jawaban ini. Saya pikir poin penting untuk ditambahkan adalah bahwa konten App_Data secara default tidak dapat dilihat oleh web seperti yang disebutkan oleh JaredPar. dan juga ketika Anda berkomentar "perilaku ini dapat dimodifikasi dari * .config httphandlers"
padn
Apakah folder app_data berisi referensi ke layanan web lokal? Aplikasi web saya berfungsi dengan baik di .net F5 run. Tetapi layanan web tidak berfungsi setelah pengemasan dan penggunaan di ISS ... :(
bonCodigo
1
Folder ini juga digunakan untuk menyimpan file database lokal.
Andrei Khotko
1
Satu hal yang belum disebutkan adalah bahwa IIS me-reboot proses web ketika file diubah, tetapi App_Data dikecualikan dari ini!
Peter
43

di IIS, sorot mesin, klik dua kali "Permintaan Penyaringan", buka tab "Segmen Tersembunyi". "App_Data" terdaftar di sana sebagai folder terbatas. Ya saya tahu utas ini benar-benar sudah tua, tetapi ini masih berlaku.

rocketsarefast
sumber
25

Tujuan penggunaan App_data adalah untuk menyimpan data aplikasi agar proses web dapat diakses. Seharusnya tidak dapat dilihat oleh web dan merupakan tempat bagi aplikasi web untuk menyimpan dan membaca data.

JaredPar
sumber
7
Bukan hanya "tidak", apa pun di folder yang diblokir dari yang dilayani oleh ASP.NET
John Sheehan
@ John, saya mendapat kesan ada cara untuk "mengubah" perilaku itu. Ya, pasti jahat untuk melakukannya tetapi saya tidak tahu bagaimana umum atau tidak yang
JaredPar
Bagaimana hal itu "tidak terlihat" tercapai? Apakah folder App_data memiliki pengaturan khusus di IIS?
padn
@ Padn, saya tidak 100% yakin tentang stack tetapi itu adalah cased khusus di IIS atau stack Asp.Net. msdn.microsoft.com/en-us/library/ex526337.aspx
JaredPar
2
iirc perilaku ini dapat dimodifikasi dari *. config httphandlers
annakata
15

Ini adalah tempat untuk meletakkan database tertanam, seperti Sql Server Express, Access, atau SQLite.

Shawn
sumber
1
Atau data lain yang mungkin digunakan situs seperti, misalnya, file XML (seperti daftar negara bagian / negara / dll)
John Sheehan
1
Apakah hanya database saja? Dapatkah saya mengatakan beberapa file misalnya pdf di dalamnya yang saya ingin akses hanya memikirkan kode, misalnya menggunakan metode Response.TransmitFile?
padn
5
apa pun - konsep data tidak menentukan jenis file atau format
annakata
13

Folder App_Data adalah folder, yang proses pekerja asp.net Anda juga memiliki hak file sistem, tetapi tidak dipublikasikan melalui server web.

Sebagai contoh, kami menggunakannya untuk memperbarui CSV lokal dari formulir hubungi kami . Jika metode email yang disukai gagal atau permintaan sumber data diperlukan, file App_Data ada di sana.

Ini tidak ideal, tetapi itu adalah solusi yang baik.

Ed Blackburn
sumber
10

Dari dokumentasi tentang Struktur Folder Proyek Web ASP.NET di MSDN:

Anda dapat menyimpan file proyek Web Anda dalam struktur folder apa pun yang nyaman untuk aplikasi Anda. Untuk membuatnya lebih mudah untuk bekerja dengan aplikasi Anda, ASP.NET mencadangkan nama file dan folder tertentu yang dapat Anda gunakan untuk jenis konten tertentu.

App_Data berisi file data aplikasi termasuk file database .mdf, file XML, dan file penyimpanan data lainnya. Folder App_Data digunakan oleh ASP.NET untuk menyimpan database lokal aplikasi, seperti database untuk mempertahankan informasi keanggotaan dan peran. Untuk informasi lebih lanjut, lihat Pengantar Keanggotaan dan Memahami Manajemen Peran .

eKek0
sumber
7

Tujuan utama adalah untuk menyimpan file database aplikasi Anda.

Dan tidak, ini tidak akan dapat diakses dari web secara default.

Martin Brown
sumber
7

Kami menggunakannya sebagai area penyimpanan sementara untuk file csv yang diunggah. Setelah diunggah, metode ajax memproses dan menghapus file.

gumps
sumber
6

Penggunaan yang dimaksudkan untuk App_Data adalah untuk menyimpan file terkait database. Biasanya file .mdf SQL Server Express.

WebMatrix
sumber