我注意到Server.MapPath()中有些奇怪。如果我的文件夹末尾有空格,则会得到:
这工作正常: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")
有人可以向我解释为什么最后一个空格失败而其他地方没有空格吗?
注意:不存在任何文件夹。
最佳答案
因为你shouldn't:
问题来自FileUtil.IsSuspiciousPhysicalPath(string physicalPath, out bool pathTooLong)
方法,该方法进行比较:
string.Compare(physicalPath, Path.GetFullPath(physicalPath), StringComparison.OrdinalIgnoreCase) != 0;
Path.GetFullPath()
将修剪目录和文件名中的尾随空格(因为它调用Path.NormalizePath()
这样做),例如,可以通过调用Path.GetFullPath(@"C:\Foo \Bar.txt")
来发现。由于该路径与包含空格的原始路径不匹配,因此该方法将返回true
,从而将该路径标识为可疑路径,之后Server.MapPath
将引发异常。关于c# - Server.MapPath和空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11665179/