2011-11-29 126 views
0

我使用此代碼爲我的LinkBut​​ton單擊它時下載文件。 最近我得到了這個問題,我需要一個虛擬路徑。ASP.NET中的虛擬路徑

我想重定向到C:\inetpub\wwwroot

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

所以我不知道要放什麼東西在使用Server.Mappath(),因爲如果我把/它會去我的文件夾和文件的基礎沒有在

+0

你想發送文件給用戶,還是用戶上傳文件? – abatishchev

+0

上傳完成後,在這裏我只想上傳 – Kiwimoisi

+0

按照此鏈接瞭解更多有關路徑http://www.west-wind.com/weblog/posts/2009/Dec/21/Making-Sense-of-ASPNET -Paths – coder

回答

1

如果您需要從系統的另一部分提供文件然後要做到這一點是創建一個虛擬目錄的最佳方式

在IIS右鍵點擊您的網站,點擊'添加虛擬目錄'。給它一個名字,並指出它無論你需要它。例如。名爲'files'的新虛擬目錄指向'C:\ inetpub \ wwwroot \ files'。

然後從您的網站中,你可以通過使用

/files/filename.txt <引用這些文件 - /文件/將鏈接到您的虛擬目錄。

您當然需要確保您的權限設置正確才能閱讀這些文件,但我會將其保留給您。

0
Server.MapPath("~"); 

會給你當前的web應用程序根目錄。

+0

它返回我C:\ Users \ Maxime.UICENTRIC \ Documents \ Visual Studio 2010 \ Projects \ ClientPortalCas \ ClientPortalCas \ .. – Kiwimoisi

+1

@Emged:因爲您在VS web服務器本地運行它。在IIS上它將返回網站的根,例如'C:\的Inetpub \ wwwroot的\ site1' – abatishchev

1

您不允許從根部向上移動。根表示應用程序的根文件夾。如果你這樣做,這是一個安全漏洞。

因此,如果你希望去到應用程序的根目錄,你可以使用Server.MapPath("~");

2

您目前在My Documents下看到一個文件夾,因爲您正在項目文件夾中運行/調試,可能使用了開發服務器或IISExpress。

只要您將站點部署到C:\Inetpub下的文件夾,MapPath就會返回該文件夾。

但是,作爲安全措施,無法從應用程序中將較高的文件夾(在樹中)作爲根文件夾返回。

如果你需要,你必須自己從返回的路徑中刪除文件夾。你可以使用System.IO.Path