Для чего используется папка App_Data в Visual Studio?

156

При создании нового приложения ASP.NET в Visual Studio несколько файлов и папок создаются автоматически. Одна из тех папок называется App_Data.

Также при публикации веб-сайта, выбрав опцию меню, Build->Publishфлажок доступенInclude files from the App_Data folder .

Прав ли я, если предположить, что файлы, помещенные в этот файл и его подпапки, не будут доступны через Интернет? Например, было бы безопасно поместить в эту папку ресурсы, которые я намерен использовать только кодом приложения?

Какова реальная цель использования App_Data папки?

РЕДАКТИРОВАТЬ:

Спасибо за все ответы. Из полученных ответов меня больше всего интересуют два момента:

  1. App_Data по сути является точкой хранения для файлового хранилища данных
  2. Он не должен быть доступен для просмотра в Интернете и является веб-приложением для хранения и чтения данных.

Может ли кто-нибудь указать, как обеспечивается «недоступность для просмотра через Интернет»? Могу ли я полагаться на этот факт при выполнении стандартного развертывания или мне нужно также проверить некоторые параметры IIS на сервере.

В ситуации, когда у меня есть набор PDF-файлов, которые я хочу, чтобы быть доступным только из приложения. Будет ли папка App_Data подходящим местом для использования, или я должен создать отдельную папку и вручную настроить IIS, чтобы обеспечить ее недоступность через Интернет?

padn
источник

Ответы:

119

App_Data - это, по сути, точка хранения для файловых хранилищ данных (в отличие от хранилища базы данных сервера SQL, например). Некоторые простые сайты используют его для контента, хранящегося, например, в формате XML, обычно там, где плата за хостинг для БД дорогая.

annakata
источник
8
Спасибо Аннаката за этот ответ. Я думаю, что важно добавить, что содержимое App_Data по умолчанию не доступно для просмотра в Интернете, как упомянуто JaredPar. а также, как вы прокомментировали, «это поведение можно изменить из * .config httphandlers»
padn
Содержит ли папка app_data ссылки на локальные веб-службы? Мое веб-приложение отлично работает в .net F5 запустить. Но веб-сервисы не работают после упаковки и развертывания в ISS ... :(
bonCodigo
1
Также эта папка используется для хранения файлов локальной базы данных.
Андрей Хотько
1
Одна вещь, которая не была упомянута, состоит в том, что IIS перезагружает веб-процесс при изменении файла, но App_Data исключается из этого!
Питер
43

в IIS выделите компьютер, дважды щелкните «Фильтрация запросов», откройте вкладку «Скрытые сегменты». «App_Data» указан там как ограниченная папка. Да, я знаю, что эта ветка действительно старая, но она все еще применима.

rocketsarefast
источник
25

Предполагаемое использование App_data - хранение данных приложения для веб-процесса. Он не должен быть доступен для просмотра в Интернете и является местом, в котором веб-приложение может хранить и считывать данные.

JaredPar
источник
7
Не только «не должен», но и все, что находится в этой папке, заблокировано для обслуживания ASP.NET
Джон Шихан,
@ Джон, у меня сложилось впечатление, что есть способы «изменить» это поведение. Да, определенно зло делать это, но я не знаю, насколько это распространено или нет
JaredPar
Как это "не видимый" достигается? Будут ли в папке App_data определенные настройки в IIS?
Padn
@padn, я не уверен на 100% в стеке, но это либо специальный случай в IIS, либо в стеке Asp.Net. msdn.microsoft.com/en-us/library/ex526337.aspx
JaredPar
2
iirc это поведение может быть изменено из * .config httphandlers
annakata
15

Это место для размещения встроенной базы данных, такой как Sql Server Express, Access или SQLite.

Шон
источник
1
Или любые другие данные, которые сайт может использовать, например, XML-файлы (например, список штатов / стран / и т. Д.)
Джон Шихан,
1
Является ли база данных только тогда? Могу ли я добавить в него, например, файлы PDF, к которым я хочу получить доступ только с помощью кода, например, используя метод Response.TransmitFile?
padn
5
что-нибудь - понятие данных не определяет
тип файла
13

Папка App_Data - это папка, в которой ваш рабочий процесс asp.net также имеет права на файловые системы, но не публикуется через веб-сервер.

Например, мы используем его для обновления локального CSV формы обратной связи . Если предпочтительный метод электронной почты не удается или требуется какой-либо запрос источника данных, файлы App_Data находятся там.

Это не идеально, но это хороший запасной вариант.

Эд Блэкберн
источник
10

Из документации о структуре папок веб-проекта ASP.NET в MSDN:

Вы можете хранить файлы вашего веб-проекта в любой структуре папок, удобной для вашего приложения. Чтобы упростить работу с вашим приложением, ASP.NET резервирует определенные имена файлов и папок, которые вы можете использовать для определенных типов контента.

App_Data содержит файлы данных приложения, включая файлы базы данных .mdf, файлы XML и другие файлы хранилища данных. Папка App_Data используется ASP.NET для хранения локальной базы данных приложения, такой как база данных для поддержки информации о членстве и роли. Для получения дополнительной информации см. Введение в членство и понимание управления ролями .

eKek0
источник
7

Основное назначение - сохранить файл (ы) базы данных вашего приложения в.

И нет, это не будет доступно из Интернета по умолчанию.

Мартин Браун
источник
7

Мы используем его как временное хранилище для загруженных CSV-файлов. После загрузки метод ajax обрабатывает и удаляет файл.

gumps
источник
6

Назначение для App_Data - хранить файл, связанный с базой данных. Обычно SQL Server Express .mdf файлы.

WebMatrix
источник