Wofür wird der Ordner App_Data in Visual Studio verwendet?


156

Beim Erstellen einer neuen ASP.NET-Anwendung in Visual Studio werden einige Dateien und Ordner automatisch erstellt. Einer dieser Ordner heißt App_Data.

Auch beim Veröffentlichen einer Website durch Auswahl der Build->PublishMenüoption ist ein Kontrollkästchen verfügbar Include files from the App_Data folder.

Habe ich Recht, wenn ich davon ausgehe, dass die in dieser Datei und ihren Unterordnern enthaltenen Dateien nicht über das Internet zugänglich sind? Wäre es beispielsweise sicher, Ressourcen in diesen Ordner zu legen, die nur vom Anwendungscode verwendet werden sollen?

Was ist der eigentliche Verwendungszweck des App_DataOrdners?

BEARBEITEN:

Vielen Dank für alle Antworten. Von den bisher eingegangenen Antworten interessieren mich hauptsächlich zwei Punkte:

  1. App_Data ist im Wesentlichen ein Speicherpunkt für den dateibasierten Datenspeicher
  2. Es sollte nicht für das Web sichtbar sein und ist ein Ort, an dem die Web-App Daten speichern und lesen kann

Wäre jemand in der Lage anzugeben, wie die "nicht im Web sichtbar" sichergestellt ist? Kann ich mich bei der Standardbereitstellung auf diese Tatsache verlassen oder muss ich auch einige IIS-Einstellungen auf dem Server überprüfen?

In der Situation, in der ich eine Reihe von PDF-Dateien habe, auf die ich nur über die Anwendung zugreifen möchte. Wäre der Ordner App_Data der richtige Ort, oder sollte ich einen separaten Ordner erstellen und IIS manuell festlegen, um sicherzustellen, dass das Web nicht auf ihn zugreifen kann?

Antworten:


119

App_Data ist im Wesentlichen ein Speicherpunkt für dateibasierte Datenspeicher (im Gegensatz zu beispielsweise einem SQL Server-Datenbankspeicher). Einige einfache Websites verwenden es beispielsweise für Inhalte, die als XML gespeichert sind, normalerweise dort, wo Hosting-Gebühren für eine Datenbank teuer sind.


8
Danke annakata für diese Antwort. Ich denke, der wichtige Punkt, der hinzugefügt werden muss, ist, dass der Inhalt von App_Data standardmäßig nicht im Web angezeigt werden kann, wie von JaredPar erwähnt. und auch wie Sie kommentiert haben "dieses Verhalten kann von * .config httphandlers geändert werden"
padn

Enthält der Ordner app_data die Verweise auf lokale Webdienste? Meine Webanwendung funktioniert in .net F5 einwandfrei. Aber Webdienste funktionieren nicht nach dem
Packen

1
Dieser Ordner wird auch zum Speichern lokaler Datenbankdateien verwendet.
Andrei Khotko

Eine Sache, die nicht erwähnt wurde, ist, dass IIS den Webprozess neu startet, wenn eine Datei geändert wird, aber App_Data davon ausgeschlossen ist!
Peter

43

Markieren Sie in IIS den Computer, doppelklicken Sie auf "Filter anfordern" und öffnen Sie die Registerkarte "Versteckte Segmente". "App_Data" wird dort als eingeschränkter Ordner aufgeführt. Ja, ich weiß, dass dieser Thread wirklich alt ist, aber dies gilt immer noch.


25

Die beabsichtigte Verwendung von App_data besteht darin, Anwendungsdaten für den Webprozess zu speichern, um darauf zugreifen zu können. Es sollte nicht für das Web sichtbar sein und ist ein Ort, an dem die Web-App Daten speichern und lesen kann.


7
Nicht nur "sollte nicht", alles in diesem Ordner kann nicht von ASP.NET bereitgestellt werden
John Sheehan

@ John, ich hatte den Eindruck, dass es Möglichkeiten gibt, dieses Verhalten zu "ändern". Ja, definitiv böse, aber ich weiß nicht, wie häufig das ist oder nicht
JaredPar

Wie wird das "nicht sichtbar" erreicht? Hätte der Ordner App_data bestimmte Einstellungen in IIS?
Padn

@padn, ich bin mir über den Stapel nicht 100% sicher, aber er ist entweder speziell in IIS oder im Asp.Net-Stapel untergebracht. msdn.microsoft.com/en-us/library/ex526337.aspx
JaredPar

2
iirc dieses Verhalten kann von * .config httphandlers
annakata geändert werden

15

Hier können Sie eine eingebettete Datenbank wie SQL Server Express, Access oder SQLite ablegen.


1
Oder andere Daten, die die Site möglicherweise verwendet, wie beispielsweise XML-Dateien (wie eine Liste von Staaten / Ländern / usw.)
John Sheehan

1
Ist eine die Datenbank nur dann? Kann ich einige zB PDF-Dateien einfügen, auf die ich nur über den Code zugreifen möchte, z. B. mithilfe der Response.TransmitFile-Methode?
Padn

5
alles - das Konzept der Daten spezifiziert keinen Dateityp oder Format
annakata

13

Der Ordner App_Data ist ein Ordner, für den Ihr asp.net-Arbeitsprozess ebenfalls Dateisystemrechte besitzt, der jedoch nicht über den Webserver veröffentlicht wird.

Zum Beispiel aktualisieren wir damit eine lokale CSV eines Kontaktformulars . Wenn die bevorzugte Methode für E-Mails fehlschlägt oder eine Abfrage der Datenquelle erforderlich ist, sind die App_Data-Dateien vorhanden.

Es ist nicht ideal, aber es ist ein guter Rückfall.


10

Aus der Dokumentation zur ASP.NET-Webprojekt-Ordnerstruktur in MSDN:

Sie können die Dateien Ihres Webprojekts in jeder Ordnerstruktur aufbewahren, die für Ihre Anwendung geeignet ist. Um die Arbeit mit Ihrer Anwendung zu vereinfachen, reserviert ASP.NET bestimmte Datei- und Ordnernamen, die Sie für bestimmte Inhaltstypen verwenden können.

App_Data enthält Anwendungsdatendateien, einschließlich MDF-Datenbankdateien, XML-Dateien und anderer Datenspeicherdateien. Der Ordner App_Data wird von ASP.NET zum Speichern der lokalen Datenbank einer Anwendung verwendet, z. B. der Datenbank zum Verwalten von Mitgliedschafts- und Rolleninformationen. Weitere Informationen finden Sie Einführung in die Mitgliedschaft und Verstehen Rollenverwaltung .


7

Die Hauptabsicht besteht darin, die Datenbankdatei (en) Ihrer Anwendung zu behalten.

Und nein, dies ist standardmäßig nicht über das Web zugänglich.


7

Wir verwenden es als temporären Speicherbereich für hochgeladene CSV-Dateien. Nach dem Hochladen verarbeitet und löscht eine Ajax-Methode die Datei.


6

Die beabsichtigte Verwendung für App_Data ist das Speichern datenbankbezogener Dateien. Normalerweise SQL Server Express-MDF-Dateien.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.