MrS*_*ess 5 .net c# asp.net server.mappath
我在Server.MapPath()中发现了一些奇怪的东西.如果我有一个空格的文件夹,我得到:
HttpException:无法映射路径.
这很好用:
Server.MapPath("/Folder1/Folder2/item.jpg")
这很好用:
Server.MapPath("/Folder1/ Folder2/item.jpg")
这很好用:
Server.MapPath("/Folder1/Fol der2/item.jpg")
这失败了!:
Server.MapPath("/Folder1/Folder2 /item.jpg")
有人可以向我解释为什么最后的空间会失败,而其他地方的空间却没有?
注意:没有文件夹存在.
因为你不应该:
文件名或目录名请勿以空格或句点结尾。尽管底层文件系统可能支持此类名称,但 Windows shell 和用户界面不支持。但是,可以将句点指定为名称的第一个字符。例如,“.temp”。
问题来自于方法FileUtil.IsSuspiciousPhysicalPath(string physicalPath, out bool pathTooLong),该方法进行了比较:
string.Compare(physicalPath, Path.GetFullPath(physicalPath), StringComparison.OrdinalIgnoreCase) != 0;
Run Code Online (Sandbox Code Playgroud)
Path.GetFullPath()将从目录和文件名中删除尾随空格(因为它调用了Path.NormalizePath()which这样做),Path.GetFullPath(@"C:\Foo \Bar.txt")例如可以发现调用。由于这与包含空格的原始路径不匹配,true因此该方法将返回,从而将该路径识别为可疑,然后Server.MapPath抛出异常。
| 归档时间: |
|
| 查看次数: |
2321 次 |
| 最近记录: |