1)设置它的正确方法是什么?
我主要担心的是我想让ASP / ASP.NET应用程序写入文件夹,但我不希望常规的http用户能够将文件PUT写入其中.
解决方法
这就是说有一些正当理由,但这有点棘手,取决于应用程序需要写出文件的原因.
将数据写在代码运行的地方之外是绝对必要的.允许最终用户写入ASPX / asp引擎可以解释/执行代码的路径是显而易见的原因.
影响这一点的其他一些事情是:
>您是在域帐户还是标准网络服务下运行工作进程.重要的是要意识到,当您授予IIS_WPG组对文件夹的写访问权限时,在服务器上的默认帐户下运行的任何ASP.NET应用程序都可以将文件写入该文件夹.在多个应用程序运行的服务器上,这是一种不太理想的配置,尤其是当应用程序不受信任和/或在ISP /共享托管环境中运行时.>生成的文件是否需要Web可用.如果您的应用程序只是写出一些非Web可查看文件,只需创建目录,授予权限,并将应用程序配置为读/写到正确的位置即可.如果应用程序需要写出Web可查看文件(这在内容管理方案中很常见),则需要创建映射到可写目录的虚拟目录(没有执行代码/脚本权限).>您是否在负载平衡/ Web场环境中工作.如果您的应用程序在养殖环境中运行并且由于某种原因需要将文件写入磁盘,则会出现一个全新的问题.如何将webserver1上的用户生成文件与webserver2上生成的文件同步?通过一些复杂的同步脚本来做这件事充其量是痛苦的,并且充满了种族/同步问题.实现此目的的最佳方法是在第三台服务器上创建共享(理想情况下是具有一定冗余的集群)并将数据存储在那里.如果您在域帐户(安全性最佳实践)下运行工作进程,您甚至可以映射到应用程序中的共享,而无需在代码或web.config中的任何位置使用用户/传递(使审计/安全人员满意). IIS还能够将虚拟目录映射到UNC路径,因此这不会影响您使此内容Web可见的能力.