0

IIS 7.5 には、ネットワーク リソースを指す仮想ディレクトリがいくつかあります。具体的には、これらのフォルダーには PDF ファイルが格納されます。これらのフォルダーへのアクセス許可をユーザーに付与しました。予想どおり、それらのコンテンツには Web 要求を介してアクセスできます。たとえば、http://mysite/dir1/test.pdf両方の仮想ディレクトリで完全に機能します。ただし、仮想ディレクトリの 1 つ (もう一方は正常に動作) を展開してサブ フォルダーを表示しようとすると、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応答しない動作を引き起こすことです。ファイル サイズやフォルダー サイズの制限はありますか? 2 つのディレクトリの唯一の違いは、ファイルの数とその結果としてのフォルダーのサイズです。動作しないものは1GBをわずかに超えています。

4

1 に答える 1

0

サイズ制限があるかわかりません。制限は私のマシンストレージのサイズだと思います。フォルダ内のすべてのファイルのリストを表示する場合、リストが長くなると、速度の問題が発生する可能性があります。ファイルパスなどを取得すると、より多くのリソースを必要とするファイルI/O操作が発生します。ユーザーが新しいPDFを投稿するたびに、ファイルの詳細(名前、場所)をデータベースに保存し、その画像をフォルダー内にスローするようにアプリケーションを設計します。このように、ユーザーがファイルを取得したい場合は、ファイルグラブ(ファイルI / Oであり、より多くのリソースを使用します)を実行し、ファイルのリストを表示したい場合は、データベーステーブルから読み取ります。幅は4列を超え、データベースは数百万行の読み取りを簡単に処理できます。

于 2012-07-17T20:46:24.493 に答える