首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server.MapPath与空间

Server.MapPath与空间
EN

Stack Overflow用户
提问于 2012-07-26 08:20:50
回答 3查看 2.8K关注 0票数 5

我在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")

有人能向我解释一下,为什么在最后的空间失败了,而其他地方的空间却没有?

注:不存在任何文件夹。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-26 13:33:19

因为你不应该

不要以空格或句点结束文件或目录名。虽然底层文件系统可能支持这些名称,但Windows shell和用户界面不支持。但是,将句点指定为名称的第一个字符是可以接受的。例如,".temp“。

这个问题来自于方法FileUtil.IsSuspiciousPhysicalPath(string physicalPath, out bool pathTooLong),它做了一个比较:

代码语言:javascript
复制
string.Compare(physicalPath, Path.GetFullPath(physicalPath), StringComparison.OrdinalIgnoreCase) != 0;

Path.GetFullPath()将从目录和文件名中修剪尾随空格(因为它调用了Path.NormalizePath(),因此可以这样做),例如,可以发现调用Path.GetFullPath(@"C:\Foo \Bar.txt")。由于这与包含空格的原始路径不匹配,该方法将返回true,从而将路径标识为可疑路径,然后Server.MapPath将抛出异常。

票数 2
EN

Stack Overflow用户

发布于 2012-07-26 08:38:30

MapPath方法将指定的相对路径或虚拟路径映射到服务器上相应的物理目录。该方法不检查其返回的路径是否有效或是否存在于服务器上。您必须使用Directory.Exists()或File.Exists()方法来检查目录或文件是否已经存在。

代码语言:javascript
复制
if (File.Exists(Server.MapPath(file)) 

此外,还知道以下是该方法的固有字符:

星号(*)

问号(?)

尖括号(<或>)

逗号(,)

冒号或分号(:或;)

单引号或双引号(‘或")

右方括号()

双斜杠(/或)

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2012-07-26 08:23:47

编辑

设置Visual 2010,以逐步进入Microsoft .NET源代码

使用thing post,当我们使用方法server.MapPath调试.net框架代码时,我试图找出.net框架中的实际内容,我发现了从虚拟路径获得绝对路径的调用,然后抛出以下文件和框架方法

System\Web\httpserverutility.cs\1477467\httpserverutility.cs Method-MapPath -文件

\System\Web\VirtualPath.cs\1477467\VirtualPath.cs*Method*-Create -文件

-System\Web\HttpRequest.cs\1599819\HttpRequest.cs Method-MapPath 文件

但是我发现,在这种情况下,当路径为/folder2 1/ enter 2 /file.cs时,它会返回me null,而在输入/enter 1/enter 2/file.cs时不会返回空对象。

我跳到你喜欢的框架里,看看发生了什么

无论如何,好的问题..but仍然是对这个问题的回答者,只有那些在framewok中设计文件的微软人才会给出这个问题。

问题在于它无法找到具有"Folder2 ".not有效空间的文件夹,并且无法在文件系统中找到该文件夹。

基本上,在windows文件系统上找不到任何文件夹,这些文件夹在namei.即结束或开始时有sapce。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11665179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档