2

在文件路径中使用 ~/ 会解析为当前文件夹或网站的根目录吗?

我有这样的文件结构:

\
->Folder
-->Page1.Aspx

->App_Themes
-->Theme1
--->Images
--->StyleSheet.css

->Includes
-->Footer.htm

Default.aspx
Default.master

我将我的 default.master 页面用于 Page1.aspx 和 default.aspx。母版页使用<!-- #include file="includes/Footer.htm" -->. 然后在我的 Footer.html 中,我使用图像的路径,例如:~/App_Themes/Theme1/Images/Image1.png"。

该图像将在 default.aspx 中正确显示,但在 Page1.aspx 中找不到。我认为 ~/ 在文件路径中使用时表示网站的根目录?

编辑:

我错了,它在 defaut.aspx 中也不起作用。有效的路径是:/App_Themes/Theme1/Images/Image1.png。

4

1 回答 1

5

它解析为当前 Web 应用程序的根,它可能是也可能不是整个网站的根。

要了解差异,请参阅本文

作为一般规则,当您在 Visual Studio 中创建“网站”或“Web 应用程序”时,实际上是在 IIS 中创建“Web 应用程序”。

为了进一步混淆水域,从概念上讲,网站的根目录本身就是一个 IIS“应用程序”,因此您可以将 Visual Studio 网站/Web 应用程序发布到网站的根目录。在这种情况下,~/ 将引用站点的根目录。

但是,如果您有多个应用程序都在一个站点中运行,那么在每个站点中,~/ 将引用该应用程序的根目录。

例如,假设 MySite.com 有不同的应用程序

  • mySite.Com - Visual Studio 中的不同应用程序,具有一般站点内容。
  • mySite.Com/shop 有一个购物车。这是 Visual Studio 中一个独特的应用程序,也是一个独特的 IIS 应用程序。
  • MySite.Com/Support 包含一个单独的、独特的客户支持应用程序。提交票证,与现场接线员聊天等。

在上述所有内容中,mysite.com 是网站。但 /* 表示应用程序。~/ 将指

  • mySite.com/
  • mySite.Com/shop/

  • MySite.Com/支持/

分别

于 2012-07-04T19:00:25.637 回答