2012-11-07 97 views
2

我正在使用c#,asp.net和Web應用程序工作。MapPath vs VirtualPathUtility.ToAbsolute

我最初有一個相對路徑,因此我需要成爲一個絕對路徑。 下面的作品,但需要得到的絕對路徑:

return Chart.RenderChartHTML("../../Charts/MSLine.swf"); 

我試過,沒有工作(注意,它給我的完整路徑我的硬盤驅動器上的.swf文件)的情況如下:

string mslinepath = HttpContext.Current.Server.MapPath("Charts/MSLine.swf"); 

    return Chart.RenderChartHTML(mslinepath); 

我又試圖其工作原理如下:

string mslinepath = VirtualPathUtility.ToAbsolute("~/Charts/MSLine.swf"); 

    return Chart.RenderChartHTML(mslinepath); 

奇怪,爲什麼VirtualPathUtility.ToAbsolute工作,而另一個沒有。

+1

我編輯了您的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

8

MapPath返回服務器上對應於指定虛擬路徑的物理文件路徑。
(如: 「C:\的Inetpub \ wwwroot的\圖表\ MSLine.swf」)

ToAbsolute轉換應用程序相對虛擬路徑(一個開始 「〜/」)到一個絕對虛擬路徑。
(例如:「/AppName/Charts/MSLine.swf」)

+0

謝謝,但你知道爲什麼一個人會工作,而另一個沒有工作 –

+1

因爲'RenderChartHTML'方法需要一個虛擬路徑,'MapPath'返回一個物理路徑。 –

相關問題