我有一个ASP。. NET web应用程序中,我试图打开位于我的web浏览器的子目录内的文本文件。文本文件通过使用SAFileUp的相同web应用程序上传。我正在使用FileInfo对象来读取文本文件…
Response.TransmitFile(fileInfo.FullName)
令人费解的是,当我执行这行代码时,我得到了一个异常。
Access to the path 'C:webrootxxxxuploadsfilename.txt' is denied
我已经给了uploads
文件夹,其中文本文件被上传,read/write/execute
权限IUSR
和IIS_IUSRS
帐户和权限继承到下面的子文件夹。有趣的是,我试图加载的实际文本文档没有IIS_IUSRS
的权限设置,而IUSR
确实有读/写/执行。只要我将"read"权限添加到IIS_IUSRS
,我就可以读取文件了。
让我困惑的是,我本以为文件会继承父文件夹的权限,但显然不是。上传过程中如何设置上传文件的权限,以便稍后打开文件进行阅读?
嗯…我找到了答案。基本上,上传组件SAFileUp使用缓存上传文件的"Temp"目录来设置上传文件的权限。在我的例子中,这个目录是C:Windowstemp
。我所做的就是给帐户IIS_IUSRS
READ访问C:Windowstemp
目录,我能够访问上传的文件没有问题。
这是SoftArtisans网站上的一篇文章,它为我提供了线索,并帮助我找到了上传文件缓存到的目录。
http://support.softartisans.com/kbview_776.aspx