MapPath vs VirtualPathUtility.ToAbsolute

Nat*_*Pet 5 c# asp.net

我正在使用c#,asp.net并在Web应用程序上工作.

我最初有一条相对路径,我需要成为绝对路径.以下工作,但需要获得绝对路径:

    return Chart.RenderChartHTML("../../Charts/MSLine.swf");
Run Code Online (Sandbox Code Playgroud)

我尝试了以下哪些不起作用(请注意,它为我提供了我的硬盘到.swf的完整路径):

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

    return Chart.RenderChartHTML(mslinepath);
Run Code Online (Sandbox Code Playgroud)

然后我尝试了以下工作:

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

    return Chart.RenderChartHTML(mslinepath);
Run Code Online (Sandbox Code Playgroud)

想知道为什么VirtualPathUtility.ToAbsolute工作而另一个没有.

Ric*_*ing 13

MapPath返回服务器上与指定虚拟路径对应的物理文件路径.
(例如:"C:\ inetpub\wwwroot\Charts\MSLine.swf")

ToAbsolute将应用程序相对虚拟路径(以"〜/"开头)转换为绝对虚拟路径.
(例如:"/ AppName/Charts/MSLine.swf")

  • 因为`RenderChartHTML`方法需要虚拟路径,而`MapPath`返回物理路径. (2认同)