2009-05-01 21 views
0

WebアプリケーションにDirectory.GetFilesとDirectory.GetDirectoriesを使用してUIを生成する単純なファイルセレクタがあります。これは私のlocalhostで完全に動作しますが、Windows Server 2003ホストにアップロードすると、同じディレクトリにあるGetFilesは動作しますが、GetDirectoriesは表示されません。Directory.GetFilesが動作し、同じディレクトリにDirectory.GetDirectoriesがありません

コードは非常に簡単です - 文字列のディレクトリは、その後、Server.MapPathの呼び出しによって作成された、とされています。私はすべてを試してみました

List<string> dirs = Directory.GetDirectories(dir).ToList(); 
List<string> files = Directory.GetFiles(dir).ToList(); 

私はセキュリティワイズと考えることができます。 Webルート内のすべてのディレクトリに "Everyone"が完全にアクセスできるようにすることさえできます。

セキュリティに問題がない場合は、もっと試してみることをおすすめします。

アップデート:私はかなり間抜けだ - HTMLを吐き出しコードがそう気づいた、削除されていなかったローカル上の任意の違いを作ったが、それはすべてのディレクトリを起こしていなかったいくつかの非常に古いテストコードが含まれていサーバー上で無視される!それが何だった?サーバー上で

if (!subDir.Contains(".")) { ... 

、すべてのサイトが自分のドメインで指定されたフォルダにある - ローカルで、そうではありません。私は==愚かです。ごめんなさい!

答えて

0

ディレクトリは隠されていますか?

実際のディレクトリか(これはWebサーバーなので)仮想フォルダですか?ところで

- あなたは、具体的List<T>機能のいくつかをしない限り、あなたが同様に3.5で、確かに...元string[]配列でそれらを残すかもしれないが、LINQはWhere(...)以来、List<T>の利点をぼかし、First(...)などのアレイに適用されます。

0

ディレクトリがあなたが思うところにあることを確認しましたか? IISはしばしば一時ディレクトリに置くことができるので、すべてのファイルをこの一時フォルダにコピーした可能性がありますが、サブディレクトリのいずれもコピーしていない可能性があります。あなたが権限を持っていない場合

0

あなたは、スローされる例外を強制することができます。

new FileIOPermission(FileIOPermissionAccess.PathDiscovery | FileIOPermissionAccess.Read,dir).Demand(); 
関連する問題