163

在 Visual Studio 中创建新的 ASP.NET 应用程序时,会自动创建几个文件和文件夹。其中一个文件夹称为App_Data.

此外,当通过选择菜单选项发布网站时,可以Build->Publish使用复选框Include files from the App_Data folder

假设无法通过网络访问此文件及其子文件夹中的文件,我是否正确?例如,将我只打算由应用程序代码使用的文件夹资源放入该文件夹是否安全?

App_Data文件夹的真正用途是什么?

编辑:

谢谢你的所有答案。从到目前为止收到的答案中,我主要对提到的两点感兴趣:

  1. App_Data 本质上是基于文件的数据存储的存储点
  2. 它不应该被网络查看,并且是网络应用程序存储和读取数据的地方

有人可以指定如何确保“网络不可见”吗?我可以在执行标准部署时依赖这个事实,还是我还需要检查服务器上的一些 IIS 设置。

在我有一组我希望只能从应用程序访问的 pdf 文件的情况下。App_Data 文件夹是否适合使用,或者我应该创建一个单独的文件夹并手动设置 IIS 以确保 Web 无法访问它?

4

9 回答 9

124

App_Data 本质上是基于文件的数据存储的存储点(例如,与 SQL 服务器数据库存储相对)。例如,一些简单的站点将其用于存储为 XML 的内容,通常在 DB 托管费用昂贵的情况下。

于 2009-02-09T16:34:12.900 回答
45

在 IIS 中,突出显示机器,双击“请求过滤”,打开“隐藏段”选项卡。“App_Data”在此处列为受限文件夹。是的,我知道这个线程真的很旧,但这仍然适用。

于 2013-02-05T22:36:32.040 回答
26

App_data 的预期用途是存储应用程序数据以供 Web 进程访问。它不应该被网络查看,并且是网络应用程序存储和读取数据的地方。

于 2009-02-09T16:33:15.943 回答
16

它是放置嵌入式数据库的地方,例如 Sql Server Express、Access 或 SQLite。

于 2009-02-09T16:32:44.227 回答
13

App_Data 文件夹是一个文件夹,您的 asp.net 工作进程也具有文件系统权限,但不通过 Web 服务器发布。

例如,我们使用它来更新联系我们表单的本地 CSV。如果首选电子邮件方法失败或需要对数据源进行任何查询,App_Data 文件就在那里。

这并不理想,但它是一个很好的后备。

于 2009-02-09T16:46:46.457 回答
10

从MSDN 中有关ASP.NET Web 项目文件夹结构的文档中:

您可以将 Web 项目的文件保存在对您的应用程序方便的任何文件夹结构中。为了更轻松地使用您的应用程序,ASP.NET 保留了某些文件和文件夹名称,您可以将它们用于特定类型的内容。

App_Data包含应用程序数据文件,包括 .mdf 数据库文件、XML 文件和其他数据存储文件。ASP.NET 使用 App_Data 文件夹来存储应用程序的本地数据库,例如用于维护成员资格和角色信息的数据库。有关详细信息,请参阅成员资格简介了解角色管理

于 2014-05-08T11:51:58.797 回答
7

主要目的是保存应用程序的数据库文件。

不,默认情况下,这将无法从网络访问。

于 2009-02-09T16:33:26.567 回答
7

我们将其用作上传的 csv 文件的临时存储区。上传后,ajax 方法会处理并删除文件。

于 2009-04-20T19:54:30.643 回答
6

App_Data 的预期用途是存储数据库相关文件。通常是 SQL Server Express .mdf 文件。

于 2009-02-09T16:34:52.087 回答