Visual Studio'da kullanılan App_Data klasörü nedir?


156

Visual Studio'da yeni bir ASP.NET uygulaması oluştururken, birkaç dosya ve klasör otomatik olarak oluşturulur. Bu klasörlerden birine denir App_Data.

Ayrıca menü seçeneğini belirleyerek Build->Publishbir web sitesini yayınlarken bir onay kutusu kullanılabilir Include files from the App_Data folder.

Bu dosyaya ve alt klasörlerine yerleştirilen dosyaların web üzerinden erişilemeyeceğini varsayabilir miyim? Örneğin, yalnızca uygulama kodu tarafından kullanmayı düşündüğüm klasör kaynaklarını koymak güvenli midir?

App_DataKlasörün gerçek kullanım amacı nedir ?

DÜZENLE:

Tüm cevaplar için teşekkürler. Şimdiye kadar alınan cevaplardan çoğunlukla bahsettiğim iki noktaya ilgi duyuyorum:

  1. App_Data aslında dosya tabanlı veri deposu için bir depolama noktasıdır
  2. Web tarafından görüntülenmemelidir ve web uygulamasının verileri depolayabileceği ve okuyabileceği bir yerdir.

Birisi "web tarafından görüntülenemez" in nasıl sağlandığını belirleyebilir mi? Standart dağıtım gerçekleştirirken bu gerçeğe güvenebilir miyim, yoksa sunucudaki bazı IIS ayarlarını da kontrol etmem gerekiyor mu?

Sadece uygulamadan erişilebilir olmasını istediğim bir dizi pdf dosyası olduğunda. App_Data klasörü kullanmak için doğru yer mi olurdu, yoksa ayrı bir klasör oluşturmalı ve IIS'yi Web tarafından erişilebilir olmadığından emin olmak için el ile ayarlamam gerekir mi?

Yanıtlar:


119

App_Data aslında dosya tabanlı veri depoları için bir depolama noktasıdır (örneğin, bir SQL sunucu veritabanı deposunun aksine). Bazı basit siteler, örneğin bir DB için barındırma ücretlerinin pahalı olduğu XML olarak depolanan içerik için kullanır.


8
Bu cevap için teşekkürler annakata. Eklemek için önemli nokta App_Data içeriği varsayılan olarak JaredPar tarafından belirtildiği gibi web tarafından görüntülenebilir olduğunu düşünüyorum. ve ayrıca "bu davranış * .config
httphandlers

App_data klasörü yerel web servislerine referanslar içeriyor mu? Web uygulamam .net F5 çalıştırmak iyi çalışıyor. Ancak web hizmetleri, ISS'de paketlendikten ve
dağıtıldıktan

1
Ayrıca bu klasör, yerel veritabanı dosyalarını depolamak için kullanılır.
Andrei Khotko

1
Bahsedilmemiş bir şey, bir dosya değiştirildiğinde IIS'nin web işlemini yeniden başlatmasıdır, ancak App_Data bundan hariç tutulur!
Peter

43

IIS'de makineyi vurgulayın, "İstek Filtreleme" yi çift tıklayın, "Gizli Segmentler" sekmesini açın. "App_Data" burada kısıtlı bir klasör olarak listelenir. Evet bu konu gerçekten eski olduğunu biliyorum, ama bu hala uygulanabilir.


25

App_data'nın kullanım amacı, web sürecinin erişmesi için uygulama verilerini saklamaktır. Web tarafından görüntülenmemelidir ve web uygulamasının verileri depolayacağı ve okuyabileceği bir yerdir.


7
Sadece "olmamalı" değil, bu klasördeki herhangi bir şeyin ASP.NET tarafından sunulması engellenir
John Sheehan

@John, bu davranışı "değiştirmenin" yolları olduğu izlenimindeydim. Evet, kesinlikle bunu yapmak kötü ama ne kadar yaygın olduğunu bilmiyorum
JaredPar

Bu "görüntülenemez" nasıl elde edilir? App_data klasörünün IIS'de belirli ayarları olur mu?
padn

@padn, yığın hakkında% 100 emin değilim ama IIS veya Asp.Net yığınında özel olarak kaplanmış. msdn.microsoft.com/tr-tr/library/ex526337.aspx
JaredPar

2
iirc bu davranış * .config
httphandlers

15

Sql Server Express, Access veya SQLite gibi gömülü bir veritabanı koymak için bir yerdir.


1
Veya sitenin kullanabileceği diğer veriler, örneğin XML dosyaları (eyaletlerin / ülkelerin / listelerin bir listesi gibi)
John Sheehan

1
Bir veritabanı sadece o zaman mı? Ben sadece kod düşündüm, örneğin Response.TransmitFile yöntemini kullanarak erişmek istiyorum bazı pdf dosyaları söyleyebilir miyim?
padn

5
bir şey - veri kavramı bir dosya türü veya biçimi
belirtmiyor

13

App_Data klasörü, asp.net worker (İşlem) alt işleminizin dosya sistemi haklarına da sahip olduğu, ancak web sunucusu üzerinden yayınlanmadığı bir klasördür.

Örneğin, bize bir iletişim formunun yerel bir CSV'sini güncellemek için kullanırız . Tercih edilen e-posta yöntemi başarısız olursa veya veri kaynağında herhangi bir sorgulama gerekiyorsa, App_Data dosyaları oradadır.

İdeal değil, ama iyi bir geri dönüş.


10

MSDN'deki ASP.NET Web Projesi Klasör Yapısı ile ilgili belgelerden :

Web projenizin dosyalarını uygulamanız için uygun olan herhangi bir klasör yapısında tutabilirsiniz. Uygulamanızla çalışmayı kolaylaştırmak için ASP.NET, belirli içerik türleri için kullanabileceğiniz belirli dosya ve klasör adlarını saklar.

App_Data , .mdf veritabanı dosyaları, XML dosyaları ve diğer veri deposu dosyalarını içeren uygulama veri dosyalarını içerir. App_Data klasörü ASP.NET tarafından bir uygulamanın üyelik ve rol bilgilerini korumak için veritabanı gibi yerel veritabanını depolamak için kullanılır. Daha fazla bilgi için, bkz . Üyeliğe Giriş ve Rol Yönetimini Anlama .


7

Ana amaç, uygulamanızın veritabanı dosyalarını tutmaktır.

Ve hayır, bu varsayılan olarak web'den erişilemez.


7

Yüklenen csv dosyaları için geçici bir depolama alanı olarak kullanıyoruz. Yüklendikten sonra, bir ajax yöntemi dosyayı işler ve siler.


6

App_Data için amaçlanan kullanım veritabanı ile ilgili dosyayı saklamaktır. Genellikle SQL Server Express .mdf dosyaları.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.