我在IIS 7.5中有一些指向网络资源的虚拟目录。具体来说,这些文件夹包含PDF文件。我已授予用户对这些文件夹的权限,并且可以通过Web请求访问其内容,如我所料。例如,http://mysite/dir1/test.pdf
适用于两个虚拟目录。但是,当我尝试扩展其中一个虚拟目录(其他工作正常)以查看子文件夹时,IIS管理器几乎立即变得无法响应。
我正在尝试在经典ASP页面上列出虚拟目录中所有PDF的文件名。
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
filepath = Server.MapPath("/resources/myfolder")
Set folder = objFSO.GetFolder(filepath)
For Each file in folder.Files
If file.Type = "PDF File" Then
Response.Write("<p>" & file.Name & "</p>")
End If
End If
Set folder = Nothing
Set objFSO = Nothing
在单独的页面上,我使用相同的代码列出另一个虚拟目录的内容。但是,此其他目录(与IIS管理器一样)会因无响应而导致问题。它会导致整个网站无响应,我必须回收到应用程序池才能让它回来。
用于访问这些资源的用户帐户的有效权限是相同的。所有文件都可以访问,我已通过硬编码fso.FileExists(filepath & filename)
确认它们存在。我还确认文件夹对象存在,并且正在设置它的属性。在这两种情况下,即使folder.Files.Count
也设置正确。问题是迭代folder.Files
的调用会导致无响应的行为。文件大小和/或文件夹大小是否有限制?我在两个目录之间看到的唯一区别是文件数量,因此文件夹的大小。不起作用的是1GB以上。
答案 0 :(得分:0)
我不知道存在大小限制。我认为限制是我的机器存储的大小。至于显示文件夹内所有文件的列表,当列表变长时,您可能会遇到一些速度问题。获取文件路径等将导致文件I / O操作占用更多资源。我会设计我的应用程序,每次用户发布新的PDF时,我将文件详细信息(名称,位置)存储在数据库中,然后将图像放在文件夹中。 这样,当用户想要检索文件时,我会执行文件抓取(文件I / O并占用更多资源),如果我只想显示文件列表,我会从数据库表中读取它宽度超过4列,数据库可以轻松处理数百万行读取。