À quoi sert le dossier App_Data dans Visual Studio?

156

Lors de la création d'une nouvelle application ASP.NET dans Visual Studio, quelques fichiers et dossiers sont créés automatiquement. L'un de ces dossiers est appelé App_Data.

Lors de la publication d'un site Web en sélectionnant l'option de menu, Build->Publishune case à cocher est également disponible Include files from the App_Data folder.

Ai-je raison de supposer que les fichiers placés dans ce fichier et ses sous-dossiers ne seront pas accessibles via le Web? Par exemple, serait-il prudent de placer dans ce dossier des ressources que j'ai l'intention d'utiliser uniquement par le code de l'application?

Quelle est l'utilisation réelle prévue du App_Datadossier?

ÉDITER:

Merci pour toutes les réponses. D'après les réponses reçues jusqu'à présent, je m'intéresse principalement à deux points mentionnés:

  1. App_Data est essentiellement un point de stockage pour le stockage de données basé sur des fichiers
  2. Il ne doit pas être visible sur le Web et constitue un emplacement pour l'application Web pour stocker et lire des données à partir de

Quelqu'un pourrait-il préciser comment le "non visible par le Web" est assuré? Puis-je me fier à ce fait lors du déploiement standard, ou dois-je également vérifier certains paramètres IIS sur le serveur.

Dans la situation où j'ai un ensemble de fichiers pdf que je souhaite être accessible uniquement depuis l'application. Le dossier App_Data serait-il le bon endroit à utiliser ou devrais-je créer un dossier distinct et définir manuellement IIS pour m'assurer qu'il n'est pas accessible par le Web?

padn
la source

Réponses:

119

App_Data est essentiellement un point de stockage pour les magasins de données basés sur des fichiers (par opposition à un magasin de base de données de serveur SQL par exemple). Certains sites simples l'utilisent pour du contenu stocké au format XML, par exemple, lorsque les frais d'hébergement d'une base de données sont coûteux.

Annakata
la source
8
Merci Annakata pour cette réponse. Je pense que le point important à ajouter est que le contenu de App_Data n'est par défaut pas visible par le Web comme mentionné par JaredPar. et aussi comme vous l'avez commenté "ce comportement peut être modifié à partir de * .config httphandlers"
padn
Le dossier app_data contient-il les références aux services Web locaux? Mon application Web fonctionne très bien avec .net F5. Mais les services Web ne fonctionnent pas après l'empaquetage et le déploiement dans ISS ... :(
bonCodigo
1
Ce dossier est également utilisé pour stocker les fichiers d'une base de données locale.
Andrei Khotko
1
Une chose qui n'a pas été mentionnée est qu'IIS redémarre le processus Web lorsqu'un fichier est modifié, mais App_Data en est exclu!
Peter le
43

dans IIS, mettez en surbrillance la machine, double-cliquez sur "Request Filtering", ouvrez l'onglet "Hidden Segments". "App_Data" y est répertorié comme un dossier restreint. Oui, je sais que ce fil est vraiment vieux, mais cela est toujours applicable.

fusée rapide
la source
25

L'utilisation prévue de App_data est de stocker des données d'application pour que le processus Web puisse y accéder. Il ne doit pas être visible sur le Web et constitue un endroit où l'application Web peut stocker et lire des données.

JaredPar
la source
7
Non seulement "ne devrait pas", tout ce qui se trouve dans ce dossier est bloqué par ASP.NET
John Sheehan
@John, j'avais l'impression qu'il y avait des moyens de «changer» ce comportement. Oui, c'est vraiment mal de le faire, mais je ne sais pas à quel point c'est courant ou non
JaredPar
Comment est-ce que «non visible» est atteint? Le dossier App_data aurait-il des paramètres spécifiques dans IIS?
padn
@padn, je ne suis pas sûr à 100% de la pile, mais elle est soit spéciale dans IIS, soit dans la pile Asp.Net. msdn.microsoft.com/en-us/library/ex526337.aspx
JaredPar
2
iirc ce comportement peut être modifié à partir de * .config httphandlers
annakata
15

C'est un endroit pour mettre une base de données intégrée, telle que Sql Server Express, Access ou SQLite.

Shawn
la source
1
Ou toute autre donnée que le site pourrait utiliser comme, par exemple, des fichiers XML (comme une liste d'états / pays / etc)
John Sheehan
1
Est-ce qu'une base de données est alors seulement? Puis-je y mettre par exemple des fichiers pdf auxquels je veux accéder en pensant uniquement au code, par exemple en utilisant la méthode Response.TransmitFile?
padn
5
n'importe quoi - le concept de données ne spécifie pas de type de fichier ou de format
annakata
13

Le dossier App_Data est un dossier dans lequel votre processus de travail asp.net possède également des droits de système de fichiers, mais n'est pas publié via le serveur Web.

Par exemple, nous l'utilisons pour mettre à jour un CSV local d'un contact formulaire de . Si la méthode préférée des e-mails échoue ou si une requête de la source de données est requise, les fichiers App_Data sont là.

Ce n'est pas idéal, mais c'est une bonne solution de repli.

Ed Blackburn
la source
10

À partir de la documentation sur la structure des dossiers de projet Web ASP.NET dans MSDN:

Vous pouvez conserver les fichiers de votre projet Web dans n'importe quelle structure de dossiers adaptée à votre application. Pour faciliter l'utilisation de votre application, ASP.NET réserve certains noms de fichiers et de dossiers que vous pouvez utiliser pour des types de contenu spécifiques.

App_Data contient des fichiers de données d'application, notamment des fichiers de base de données .mdf, des fichiers XML et d'autres fichiers de stockage de données. Le dossier App_Data est utilisé par ASP.NET pour stocker la base de données locale d'une application, telle que la base de données pour gérer les informations d'appartenance et de rôle. Pour plus d'informations, consultez Introduction à l'appartenance et compréhension de la gestion des rôles .

eKek0
la source
7

L'intention principale est de conserver le (s) fichier (s) de base de données de votre application au format.

Et non, cela ne sera pas accessible depuis le Web par défaut.

Martin Brown
la source
7

Nous l'utilisons comme zone de stockage temporaire pour les fichiers csv téléchargés. Une fois téléchargé, une méthode ajax traite et supprime le fichier.

des bosses
la source
6

L'utilisation prévue pour App_Data est de stocker le fichier lié à la base de données. Fichiers .mdf généralement SQL Server Express.

WebMatrix
la source