假设您在 IIS 上有一个公共 ASP.NET(或经典 ASP)应用程序,其脚本/页面需要在位于 Web 发布文件夹树中的特定文件夹中写入或更新文件。
1)设置它的正确方法是什么?
我主要关心的是我想让 ASP/ASP.NET 应用程序写入一个文件夹,但我不希望普通的 http 用户能够将文件放入其中。
假设您在 IIS 上有一个公共 ASP.NET(或经典 ASP)应用程序,其脚本/页面需要在位于 Web 发布文件夹树中的特定文件夹中写入或更新文件。
1)设置它的正确方法是什么?
我主要关心的是我想让 ASP/ASP.NET 应用程序写入一个文件夹,但我不希望普通的 http 用户能够将文件放入其中。
首先让我说,我非常相信几乎总有比将内容写入磁盘更好的解决方案。无论是将数据写入数据库还是提供 Web 服务,写入磁盘应该是最后的选择。
话虽如此,有一些正当的理由,但这有点棘手,并且取决于应用程序需要写出文件的原因。
将数据写入代码运行位置之外是绝对要求。出于显而易见的原因,允许最终用户写入 ASPX/asp 引擎可以解释/执行代码的路径是不好的。
影响这一点的其他一些事情是:
App_Data 文件夹
为了提高 ASP.NET 应用程序使用的数据的安全性,为 ASP.NET 应用程序添加了一个名为 App_Data 的新子文件夹。存储在 App_Data 文件夹中的文件不会响应直接 HTTP 请求而返回,这使得 App_Data 文件夹成为与应用程序一起存储的数据的推荐位置,包括 .mdf(SQL Server Express Edition)、.mdb(Microsoft Access)或 XML文件。请注意,当使用 App_Data 文件夹存储您的应用程序数据时,您的应用程序的身份对 App_Data 文件夹具有读写权限。
ASP.NET 数据访问中的新增功能
可能打赌看看stackoverflow.com ...
最佳做法是将该文件夹放在文档根目录之外,并让您的应用程序从文件系统中读取。否则,将文件夹设置为只读,除 ASP[.NET] 用户外,并使用应用程序的内部授权控制写入权限。
默认情况下,App_Data 可写但不可读。服务器似乎抵制任何改变这一点的尝试。因此,最好创建一个全新的文件夹并将其权限更改为 NOT EXECUTABLE 和 READABLE 和 WRITABLE。