System.Web.VirtualPathUtility.ToAbsolute - 此处不允许使用相对虚拟路径'./images/gift-card.jpg'

时间:2012-09-25 03:15:45

标签: c# asp.net

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

但我收到了这个错误:

相对虚拟路径' ./ images / gift-card.jpg'这里不允许。

顺便说一下,文件结构是

此代码位于.cs文件中,此文件与其他.aspx文件位于同一文件夹中(让他们说/ root)。该图像位于/ root / images /

文件夹中

有什么想法吗?

PS: 甚至我改变了路径'〜/ images / gift-card.jpg'它仍会引发异常:未处理的异常,没有进一步的信息。

2 个答案:

答案 0 :(得分:4)

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

因此,您无法将其传递给相对路径 相反,您必须以~/开头的绝对应用程序相对路径传递它。

请参阅documentation中的评论:

  

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

     

如果virtualPath是:

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

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

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

  •   

答案 1 :(得分:1)

我找到了解决方案

<强>使用Server.Mappath( “〜/路径/ file.ext”)

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

感谢大家的投入。

干杯