ASP.NET 网站路径
使用网站中的资源时,通常必须指定资源的路径。例如,您可以使用 URL 路径引用页面中的图像文件或网站中其他位置处的页面的 URL。同样,Web 应用程序中的代码可以使用基于服务器的文件的物理文件路径对文件进行读写操作。ASP.NET 提供用于引用资源并确定应用程序中的页面或其他资源的路径的方法。
许多情况下,页面中的元素或控件必须引用外部资源,如文件。ASP.NET 允许您通过各种方法引用外部资源。所选方法取决于使用客户端元素还是服务器控件。
如果引用其他位置(如外部网站)中的资源,则绝对 URL 路径非常有用。
站点根目录相对路径,根据站点(不是应用程序)根目录进行解析。此示例路径假定 Images 文件夹存在于网站根目录下:
<img src="/Images/SampleImage.jpg" />如果您的网站为 http://www.contoso.com,则路径将解析为以下形式:
http://www.contoso.com/Images/SampleImage.jpg如果将跨应用程序的资源(如图像或客户端脚本文件)保留在网站根目录下的文件夹中,则站点根目录相对路径非常有用。
根据当前页面路径解析的相对路径:
<img src="Images/SampleImage.jpg" />解析为当前页面路径对等的相对路径。
<img src="../Images/SampleImage.jpg" />
注意默认情况下,浏览器使用当前页面的 URL 作为基准解析相对路径。但是,您可以在页面中包含 HTMLbase 元素,以指定替代基路径。
在该示例中,图像文件将从 Web 应用程序根目录下的 Images 文件夹中直接读取,无论该页面位于网站的什么位置。
注意~ 运算符只能为服务器控件识别,并且位于服务器代码中。不能将 ~ 运算符用于客户端元素。
可以在服务器控件中的任何与路径有关的属性中使用 ~ 运算符。
注意在主控页中,资源的路径基于内容页的路径进行解析。有关更多信息,请参见 ASP.NET 母版页概述。
在应用程序中,您可能需要确定服务器上的文件或其他资源的路径。例如,如果应用程序以编程方式对文本文件进行读写操作,则必须为用于读取和写入的方法提供该文件的完整物理路径。
将物理文件路径(如 C:/Website/MyApplication)硬编码到应用程序中并不是很好的做法,因为如果移动或部署应用程序,则路径会发生更改。但是,ASP.NET 为您提供了以编程方式获取应用程序中的任何物理文件路径的方法。然后,您可以使用基文件路径创建所需资源的完整路径。用于确定文件路径的两种最常用的 ASP.NET 功能是返回路径信息的 HttpRequest 对象的属性,以及 MapPath 方法。
注意不应将物理文件路径发送到客户端,因为它们可能会被恶意用户用来获取有关您的应用程序的信息。
对于这些示例,术语“虚拟路径”是指跟在服务器标识符后面的请求 URL 的一部分,此时虚拟路径如下所示:
/MyApplication/MyPages/Default.aspx此外,这些示例假定网站根目录的物理路径为以下形式:
C:/inetpub/wwwroot/MyApplication/最后,这些示例假定物理路径包含一个名为 MyPages 的文件夹。
ApplicationPath
获取当前应用程序的根目录路径,无论在该应用程序中的什么位置请求该路径。对于此示例,该属性将返回以下内容:
/
CurrentExecutionFilePath
获取当前请求的虚拟路径。不同于 FilePath,差别在于如果请求已在服务器代码中被重定向,则 CurrentExecutionFilePath 就是正确的。对于此示例,该属性将返回以下内容:
/MyApplication/MyPages/Default.aspx
如果作为对 Transfer 或 Execute 进行调用的结果,您获取正在运行的代码中的属性,则路径将反映该代码的位置。
FilePath
获取当前请求的虚拟路径。对于此示例,该属性将返回以下内容:
/MyApplication/MyPages/Default.aspx
不同于 CurrentExecutionFilePath,FilePath 不反映服务器端转换。
Path
获取当前请求的虚拟路径。对于此示例,该属性将返回以下内容:
/MyApplication/MyPages/default.aspx
PhysicalApplicationPath
获取当前正在执行的应用程序的根目录的物理文件系统路径。对于此示例,该属性将返回以下内容:
C:/inetpub/wwwroot/
PhysicalPath
获取与请求的 URL 对应的物理文件系统路径。对于此示例,该属性将返回以下内容:
C:/inetpub/wwwroot/MyApplication/MyPages/default.aspx
Dim rootPath As String = Server.MapPath("~") 复制代码String rootPath = Server.MapPath("~");
注意传递给 MapPath 方法的路径必须为应用程序相对路径,而不是绝对路径。