0

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

コードは信じられないほど単純です。文字列 dir は Server.MapPath 呼び出しによって作成され、次のようになります。

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

セキュリティに関して考えられることはすべて試しました。「Everyone」に Web ルートのすべてのディレクトリへのフル アクセスを許可するところまで行っても、これでも違いはありません。

したがって、問題がセキュリティにない場合は、さらに試してみるべきことについていくつかの提案をいただければ幸いです。

更新:私はかなりばかです - HTML を吐き出したコードには、ローカルでは何の違いもなかった非常に古いテスト コードが含まれていたため、気付かれずに削除されていましたが、サーバー上のすべてのディレクトリが無視されていました。 ! それが何だった?

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

サーバー上では、すべてのサイトはドメインによって名前が付けられたフォルダーにありますが、ローカルではそうではありません。私==ばか。みんなごめんなさい!

4

3 に答える 3

0

権限がない場合は、例外を強制的にスローすることができます。

new FileIOPermission(FileIOPermissionAccess.PathDiscovery | FileIOPermissionAccess.Read,dir).Demand();
于 2009-05-01T08:24:29.713 に答える
0

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

それらは実際のディレクトリですか、それとも (これは Web サーバーであるため) 仮想フォルダですか?

ところで、特にいくつかのList<T>機能が必要でない限り、それらを元の配列のままにしておくこともできます...実際、 3.5 では、string[]LINQ は の利点をぼやけさせます。List<T>Where(...)First(...)

于 2009-05-01T08:19:46.883 に答える
0

ディレクトリがあなたが思っている場所にあることを確認しましたか? IIS は多くの場合、ユーザーを一時ディレクトリに配置できるため、すべてのファイルがこの一時フォルダーにコピーされている可能性がありますが、サブディレクトリはまったくコピーされていないため、何もありません。

于 2009-05-01T08:20:47.227 に答える