我注意到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/

10-11 15:20