4

こんにちは、助けていただけないでしょうか。

複数のサーバー上に存在するアプリケーションを作成しているため、複数の IP が存在し、正確な IP とディレクトリ構造を使用する代わりに、アプリケーションが実際に実行されている場所からフォルダーを「ステップバック」したいと考えています。では例えば……。

フォルダ構成は

\controls\ ---- これには、blogengine フォルダーに xml ファイルが存在するかどうかをチェックする aspx ファイルが含まれています。

\blogengine\ これには xml ファイルが含まれている必要があります

私が使用しているコードは......

string[] filePaths = Directory.GetFiles(@"\\94.175.237.35\inetpub$\wwwroot\mytest\BlogEngine\", "*.xml");

これは特定のサーバー上のファイルを見つけますが、ファイルパスを変更し続ける必要がないように、アプリケーションが実行されているサーバーに関連するファイルを見つける必要があります。だから私は次のようなものが必要です

string[] filePaths = Directory.GetFiles(@"..\BlogEngine\", "*.xml");

しかし、これを行うための正しい構文が見つかりませんか?

誰か知っていますか??

前もって感謝します、クレイグ

4

3 に答える 3

6

メソッドを使用してServer.MapPath()、相対パス (現在のディレクトリまたは Web サイトのルートに基づく) をアクセス可能な絶対パスにマップします。

例えば:

string folderPath = Server.MapPath("~/BlogEngine");
string[] filePaths = Directory.GetFiles(folderPath, "*.xml");

チルダ文字は、Web サイトのルートを表します。相対パスを指定すると、ASP.NET ページが存在するディレクトリに対する相対パスとして解決されます。

于 2012-09-11T15:42:20.903 に答える
1

ASP.Net アプリケーションでは、 を呼び出しServer.MapPath("~/path") て、アプリケーションのルート ディレクトリを基準としたディスク上のパスを解決できます。

于 2012-09-11T15:42:17.733 に答える
1

Path.GetFullPathを使用して、相対パスから絶対パスを取得します。

したがって、コードは次のようになります。

string[] filePaths = Directory.GetFiles(Path.GetFullPath(@"..\BlogEngine\"), "*.xml");
于 2012-09-11T15:44:36.370 に答える