ASP.NETの仮想パス
-
25-10-2019 - |
質問
リンクボタンのこのコードを使用して、クリックするとファイルをダウンロードしています。最近、この問題が発生しました。仮想パスが必要です。
リダイレクトしたいのですが C:\inetpub\wwwroot
string filepath = Server.MapPath("...");
FileInfo myfile = new FileInfo(filepath);
だから私はserver.mappath()に何を入れるべきかわからないので、私が置いた場合、それは私のフォルダードキュメントのベースに移動するので、
解決
システムの別の部分からファイルを提供する必要がある場合、これを行うための最良の方法は 仮想ディレクトリを作成します.
IISの右手で、[Webサイトをクリック]をクリックして、[仮想ディレクトリの追加]をクリックします。名前を付けて、必要な場所に指し示してください。たとえば、「c: inetpub wwwroot files」を指す「ファイル」と呼ばれる新しい仮想ディレクトリ。
次に、サイト内から使用してこれらのファイルを参照できます
/files/filename.txt <-the /ファイル/ 仮想ディレクトリにリンクします。
もちろん、これらのファイルを読み取るために許可を正しく設定していることを確認する必要がありますが、私はそれをあなたに任せます。
他のヒント
現在、あなたはあなたの下にフォルダーが表示されます My Documents
おそらく開発サーバーまたはIISEXPRESSを使用して、プロジェクトフォルダーで実行/デバッグしているためです。
サイトを下のフォルダーに展開するとすぐに C:\Inetpub
, 、 MapPath
そのフォルダーを返します。
ただし、セキュリティメジャーとして、アプリケーションからルートフォルダーとして(ツリー内)フォルダーをより高い(ツリー内)返すことはできません。
それが必要な場合は、返されたパスから自分でフォルダーを削除する必要があります。使用できます System.IO.Path
そのために。
あなたはあなたの根から上に移動することを許可されていません。ルートは、アプリケーションのルートフォルダーを意味します。あなたがそうしようとしているなら、それはセキュリティ侵害です。
したがって、アプリケーションのルートに移動したい場合は、使用できます Server.MapPath("~");
Server.MapPath("~");
現在のWebアプリケーションルートを提供します。