1

我正在尝试使用 System.Web.VirtualPathUtility.ToAbsolute() 将相对路径转换为绝对路径

但我得到了这个错误:

此处不允许使用相对虚拟路径“./images/gift-card.jpg”。

顺便说一下,文件结构是

此代码位于 .cs 文件中,并且此文件与其他 .aspx 文件位于同一文件夹(例如 /root)中。图像位于文件夹 /root/images/

有任何想法吗?

ps:即使我将路径更改为“~/images/gift-card.jpg”,它仍然会引发异常:未处理的异常,没有更多信息。

4

2 回答 2

4

VirtualPathUtility.ToAbsolute()是一个静态函数,它不知道任何本地 cotnext,例如当前请求的目录。

因此,您不能将其传递给相对路径。
相反,您必须向它传递一个绝对的应用程序相对路径,以~/.

请参阅文档中的备注:

应用程序绝对路径是使用应用程序路径而不是根运算符(波浪号 [~])的路径。

如果 virtualPath 是:

  • 绝对,ToAbsolute 方法返回不变的虚拟路径。

  • 应用程序相对,ToAbsolute 方法将当前应用程序虚拟目录路径附加到 virtualPath 的开头。例如,可以从 AppDomainAppVirtualPath 属性访问当前应用程序虚拟目录路径。

  • 没有根,ToAbsolute 方法引发 ArgumentOutOfRangeException 异常。

于 2012-09-25T03:17:02.290 回答
1

我找到了解决方案

Server.MapPath("~/path/file.ext")

这完美地解决了我的问题,这是我正在寻找的方法。

谢谢大家的意见。

干杯

于 2012-09-25T03:53:09.027 回答