2

LinkBut​​tonをクリックしたときにファイルをダウンロードするために、このコードを使用しています。最近、この問題が発生しました。仮想パスが必要です。

にリダイレクトしたいC:\inetpub\wwwroot

 string filepath = Server.MapPath("...");           
 FileInfo myfile = new FileInfo(filepath);

したがって、Server.MapPath()に何を入れるかわかりません。これは、/を置くと、フォルダードキュメントのベースに移動し、Inがないためです。

4

4 に答える 4

3

システムの別の部分からファイルを提供する必要がある場合、これを行う最善の方法は、仮想ディレクトリを作成することです。

IIS で Web サイトを右クリックし、[仮想ディレクトリの追加] をクリックします。名前を付けて、必要な場所を指します。たとえば、「C:\inetpub\wwwroot\files」を指す「files」という名前の新しい仮想ディレクトリ。

次に、サイト内からこれらのファイルを参照できます。

/files/filename.txt <- /files/は仮想ディレクトリにリンクします。

もちろん、これらのファイルを読み取るためにアクセス許可が正しく設定されていることを確認する必要がありますが、それはあなたに任せます。

于 2011-11-29T10:24:13.677 に答える
2

My Documentsおそらく開発サーバーまたはIISExpressを使用して、プロジェクトフォルダーで実行/デバッグしているため、現在、フォルダーの下にフォルダーが表示されています。

サイトを の下のフォルダに配置するとすぐにC:\InetpubMapPathはそのフォルダを返します。

ただし、セキュリティ対策として、アプリケーションからルート フォルダーとして上位 (ツリー内) のフォルダーを返すことはできません。

それが必要な場合は、返されたパスから自分でフォルダーを削除する必要があります。そのために使えますSystem.IO.Path

于 2011-11-29T10:44:15.210 に答える
2

ルートから上に移動することはできません。ルートとは、アプリケーションのルート フォルダーを意味します。そうしようとしている場合、それはセキュリティ違反です。

したがって、アプリケーションのルートに移動したい場合は、使用できますServer.MapPath("~");

于 2011-11-29T10:18:03.920 に答える
1
Server.MapPath("~"); 

現在の Web アプリケーションのルートが表示されます。

于 2011-11-29T10:14:07.230 に答える