C# の .net の IO クラスは非常に強力ですが、その機能が強力であるため、多くの仮想サービス プロバイダーのサーバーでは実用的ではありません。 IO.Directory と IO.DirectoryInfo は、アプリケーション フォルダーを操作するときに、Web サイトが配置されているディスクとハードディスクのディレクトリを横断するため、通常、仮想サービス プロバイダーは、このディスクのネットワーク サービス ユーザーに対して読み取り権限を有効にしません。 IO でこれら 2 つのクラスを使用すると、次のエラーが表示されます。パス "E:" の一部が見つかりませんでした。
説明: 現在の Web リクエストの実行中に、ハンドルされない例外が発生しました。エラーの詳細と、コード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.IO.DirectoryNotFoundException: パス 'E:' の一部が見つかりません。
ソース エラー:
現在の Web リクエストの実行中に、ハンドルされない例外が生成されました。以下の例外スタック トレース情報を使用して、例外の原因と場所に関する情報を特定できます。
スタック トレース:
[DirectoryNotFoundException: パス 'E:' の一部が見つかりません。 】
System.IO.__Error.WinIOError(Int32 errorCode, String str) +287
System.IO.Directory.InternalCreateDirectory(文字列フルパス、文字列パス) +489
System.IO.Directory.CreateDirectory(文字列パス) +195
-----------------------
バージョン情報: Microsoft .NET Framework バージョン: 1.1.4322.2300; ASP.NET バージョン: 1.1.4322.2300
パス E が見つかりませんでした: /, E ドライブはサーバー上のディスク パスであり、サーバーによって異なる場合があります。この問題に直面し、サービス プロバイダーが追加のアクセス許可の付与を拒否した場合、どのように解決すればよいでしょうか?
あはは、私の基礎知識が乏しいせいか、ネットで調べてみたのですが、答えが見つかりませんでした。偶然、asp が fso を使用してフォルダーを作成できることを発見しました。そこで、asp.netを使用してウィンドウでfsoコンポーネントを呼び出すことを考えました。ハハ、それは実際にうまくいきました。この問題に悩んでいて解決できない友人や兄弟のためにこの記事を書きました。
[プロジェクト]->[参照] COM コンポーネントの参照 Microsoft Scripting Runtime
Scripting.FileSystemObject fso=new Scripting.FileSystemObjectClass();
fso.CreateFolder(Path);
だけで十分ですが、このソリューションの前提条件は、仮想サービス プロバイダーが FSO を有効
にしていることです。
IO 操作ファイル なぜ挟まれた 2 つのクラスがディスクのルート ディレクトリを横断するのかはまだ研究中ですが、この問題は最終的に解決されたと思います。
http://www.cnblogs.com/ccc110/archive/2006/12/22/600480.html