./ , ../ , ../../ , ~/ 在 asp.net 中的文件路径(URL)上的区别

Posted

技术标签:

【中文标题】./ , ../ , ../../ , ~/ 在 asp.net 中的文件路径(URL)上的区别【英文标题】:Different between ./ , ../ , ../../ , ~/ on file path(URL) in asp.net 【发布时间】:2013-10-16 20:47:53 【问题描述】:

我有一个脚本文件。

<script src="~/Scripts/angular.js"></script>

看到路径是~/Script。但是如果我输入了../../ 而不是~/,那么这个过程也是一样的。

我的网站网址如:https://sample.com/Scripts/angular.js

如果我在Scripts之前输入../../,那么它会自动更改以前的URL(https://sample.com/Scripts/angular.js)

url 流程是什么?它怎么能自动改变?请说说./, ../ , ../../ , ~/ ,/Scripts ,Scripts的区别?

【问题讨论】:

当您在浏览器中看到 URL “变成”了什么时,您具体在看什么?提供给浏览器的原始页面源,还是浏览器呈现该源后 DOM 的当前状态? @David : 点击this Url 然后在 Schin+Tendulkar-9178.jpg 之前输入 ../../ 。 确实,以这种方式更改 URL 意味着从不同的“文件夹”请求相同的文件(因为 URL 可能会映射到文件夹,但这完全是另一回事)。由于文件不在后一个位置,因此您会收到 404 响应。 【参考方案1】:

让我们看看...

 .    = this directory
 ..   = the parent directory
 ../  = the parent directory
 ~/   = the user's home directory or the application's, in ASP
 /    = the root directory

 ../../ = the parent's parent directory 

等等。

顺便说一句,这适用于所有 Linux/Unix 系统。

【讨论】:

用户的主目录? Linux/Unix?问题是关于 ASP.NET,而不是关于 Linux 文件系统。 (另请注意:这些文件系统约定并不是 Linux/Unix 独有的。它们几乎适用于任何地方。) @David 例外是 ~,Windows 无法理解。这一点在“与问题无关”和“有帮助”之间的边界上。但是,是的,Linux/Unix 和 Internet,或者更简单地说,不是 Windows。【参考方案2】:

这些路径组件是具有特定含义的快捷方式:

. 表示当前路径级别(因此,如果您使用的是 index.aspx 并且您引用了 ./style.css,那么后者必须与前者位于同一文件夹中) .. 表示向上一级路径(因此,如果您在 /somefolder/index.aspx 上并引用 ../style.css,则后者必须位于 someFolder父文件夹 中) / 表示根级别(所以/style.csshttp://www.mysite.com/style.css 相同) ASP.NET 中的~ 表示服务器端应用程序根目录(因此~/index.aspx 将被转换为应用程序根目录中index.aspx 文件的URL)

这里有很多需要注意的地方:

服务器 路径和客户端 路径之间存在差异。例如,从 Web 浏览器的角度来看,没有“应用程序根”。 Web 浏览器不知道如何处理~。这只能用于在服务器端组件中预处理的路径中。然后,服务器端组件将知道根据应用程序相对于 Web 服务器的当前位置将其转换为客户端可见的路径。 父路径说明符 (..) 没有限制。根的父母被认为是根。因此,如果您使用 http://www.mysite.com/someFolder/index.aspx 并引用 ../../../../style.css,它将转到 http://www.mysite.com/style.css。 浏览器还会为您翻译路径。这是“页面源”和“DOM”之间的区别之一。您的页面源可能引用了../somePage.aspx,但是当您将鼠标悬停在它上面时,浏览器会显示它是http://www.mysite.com/somePage.aspx。这是因为浏览器已经将前者的相对路径转换成了后者的绝对路径

【讨论】:

@WaqarNaeem:为什么不呢?你试过了吗?你遇到问题了吗?

以上是关于./ , ../ , ../../ , ~/ 在 asp.net 中的文件路径(URL)上的区别的主要内容,如果未能解决你的问题,请参考以下文章

秋的潇洒在啥?在啥在啥?

上传的数据在云端的怎么查看,保存在啥位置?

在 React 应用程序中在哪里转换数据 - 在 Express 中还是在前端使用 React?

存储在 plist 中的数据在模拟器中有效,但在设备中无效

如何在保存在 Mongoose (ExpressJS) 之前在模型中格式化数据

如何在保存在 Mongoose (ExpressJS) 之前在模型中格式化数据