我尝试使用System.Web.VirtualPathUtility.ToAbsolute()将相对路径转换为绝对路径
但我收到了这个错误:
相对虚拟路径' ./ images / gift-card.jpg'这里不允许。
顺便说一下,文件结构是
此代码位于.cs文件中,此文件与其他.aspx文件位于同一文件夹中(让他们说/ root)。该图像位于/ root / images /
文件夹中有什么想法吗?
PS: 甚至我改变了路径'〜/ images / gift-card.jpg'它仍会引发异常:未处理的异常,没有进一步的信息。
答案 0 :(得分:4)
VirtualPathUtility.ToAbsolute()
是一个静态函数,它不知道任何本地cotnext,例如当前请求的目录。
因此,您无法将其传递给相对路径
相反,您必须以~/
开头的绝对应用程序相对路径传递它。
请参阅documentation中的评论:
应用程序绝对路径是使用应用程序路径的路径 而不是根运算符(波浪号[〜])。
如果virtualPath是:
绝对,ToAbsolute方法返回虚拟路径不变。
应用程序相对,ToAbsolute方法将当前应用程序虚拟目录路径追加到开头 virtualPath。例如,当前的应用程序虚拟目录 可以从AppDomainAppVirtualPath属性访问路径。
ToAbsolute方法没有root,会引发ArgumentOutOfRangeException异常。
答案 1 :(得分:1)
我找到了解决方案
<强>使用Server.Mappath( “〜/路径/ file.ext”)强>
这完全解决了我的问题,这是我正在寻找的方法。
感谢大家的投入。
干杯