在Visual Studio中,App_Data文件夹有什么用?


156

在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不能访问它?

Answers:


119

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


8
感谢annakata的答案。我认为要添加的重要一点是,默认情况下,如JaredPar所述,Web上不可见App_Data的内容。以及您评论过的“可以从* .config httphandlers修改此行为”
padn

app_data文件夹是否包含对本地Web服务的引用?我的Web应用程序在.net F5运行中运行良好。但是在ISS中打包和部署后,Web服务不起作用... :(
bonCodigo 2014年

1
此文件夹也用于存储本地数据库文件。
安德烈·霍克

1
尚未提及的一件事是,当文件更改时,IIS会重新启动Web进程,但是App_Data除外!
Peter

43

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


25

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


7
不只是“不应该”,该文件夹中任何物品由ASP.NET所服务受阻
约翰·希恩

@John,我印象中有多种方法可以“改变”这种行为。是的,这样做绝对是邪恶的,但我不知道那是多么普遍
JaredPar 2009年

如何实现“不可见”?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文件(例如州/国家/地区列表)
John Sheehan

1
只有一个数据库吗?我是否可以说一些我想访问的例如pdf文件,仅使用代码,例如使用Response.TransmitFile方法?
padn

5
任何内容-数据的概念未指定文件类型或格式
annakata

13

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

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

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


10

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

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

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


7

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

而且默认情况下,无法从网络上访问。


7

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


6

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.