HttpContext.RewritePath 方法

定义

将对资源的请求重定向到另一路径,使其不同于所请求 URL 指示的路径。 RewritePath 用于无 Cookie 会话状态中,作用是从 URL 中剥离会话 ID。

重载

RewritePath(String, String, String, Boolean)

使用给定虚拟路径、路径信息、查询字符串信息和一个布尔值重写 URL,该布尔值用于指定是否将客户端文件路径设置为重写路径。

RewritePath(String, String, String)

使用给定的路径、路径信息和查询字符串信息重写 URL。

RewritePath(String, Boolean)

使用给定路径和一个布尔值重写 URL,该布尔值用于指定是否修改服务器资源的虚拟路径。

RewritePath(String)

使用给定路径重写 URL。

RewritePath(String, String, String, Boolean)

使用给定虚拟路径、路径信息、查询字符串信息和一个布尔值重写 URL,该布尔值用于指定是否将客户端文件路径设置为重写路径。

public:
 void RewritePath(System::String ^ filePath, System::String ^ pathInfo, System::String ^ queryString, bool setClientFilePath);
public void RewritePath (string filePath, string pathInfo, string queryString, bool setClientFilePath);
member this.RewritePath : string * string * string * bool -> unit
Public Sub RewritePath (filePath As String, pathInfo As String, queryString As String, setClientFilePath As Boolean)

参数

filePath
String

服务请求的资源的虚拟路径。

pathInfo
String

用于 URL 重定向的附加路径信息。 有关详细信息,请参阅 PathInfo

queryString
String

用于 URL 重定向的请求查询字符串。

setClientFilePath
Boolean

若要将用于客户端资源的文件路径设置为 filePath 参数的值,则为 true;否则为 false

例外

path 参数不在当前应用程序的根目录中。

filePath 参数不在当前应用程序的根目录中。

示例

有关代码示例,请参阅 RewritePath(String) 方法重载。

注解

参数 filePath 不包括 参数的内容 pathInfo 。 对于 URL http://www.microsoft.com/virdir/page.html/tail,参数 filePathhttp://www.microsoft.com/virdir/page.htmlpathInfo 参数为 tail。

若要确保不修改用于构造资源路径的虚拟路径,请将 参数设置为 setClientFilePathfalse。 可能需要将 设置为 setClientFilePathfalse 的常见方案是,需要重写 URL,并且使用主题并将 URL 重定向到位于与请求的资源不同的文件夹中的资源。

如果要在 Web 应用程序中重构页面,并且希望确保为旧 URL 添加书签的用户在移动页面后仍可以使用旧 URL,则 URL 重写非常有用。 URL 重写使你能够以透明方式将请求转发到新页面位置。

如果要使网站能够使用用户更友好且针对搜索引擎进行优化的 URL,则更可靠的替代方法是使用 ASP.NET 路由。 有关详细信息,请参阅 ASP.NET 路由

另请参阅

适用于

RewritePath(String, String, String)

使用给定的路径、路径信息和查询字符串信息重写 URL。

public:
 void RewritePath(System::String ^ filePath, System::String ^ pathInfo, System::String ^ queryString);
public void RewritePath (string filePath, string pathInfo, string queryString);
member this.RewritePath : string * string * string -> unit
Public Sub RewritePath (filePath As String, pathInfo As String, queryString As String)

参数

filePath
String

内部重写路径。

pathInfo
String

资源的附加路径信息。 有关详细信息,请参阅 PathInfo

queryString
String

请求查询字符串。

例外

path 参数不在当前应用程序的根目录中。

filePath 参数不在当前应用程序的根目录中。

示例

有关代码示例(包括此方法重载的示例),请参阅 RewritePath(String) 方法重载。

注解

方法 RewritePath 在不更改 URL 的情况下,将资源请求重定向到另一个资源。

参数 filePath 不包括 pathInfo 参数内容。 对于 URL http://www.microsoft.com/virdir/page.html/tail,参数 filePathhttp://www.microsoft.com/virdir/page.htmlpathInfo 参数为 tail。

如果要在 Web 应用程序中重构页面,并且希望确保为旧 URL 添加书签的用户在移动页面后仍可以使用旧 URL,则 URL 重写非常有用。 URL 重写使你能够以透明方式将请求转发到新页面位置。

如果要使网站能够使用用户更友好且针对搜索引擎进行优化的 URL,则更可靠的替代方法是使用 ASP.NET 路由。 有关详细信息,请参阅 ASP.NET 路由

另请参阅

适用于

RewritePath(String, Boolean)

使用给定路径和一个布尔值重写 URL,该布尔值用于指定是否修改服务器资源的虚拟路径。

public:
 void RewritePath(System::String ^ path, bool rebaseClientPath);
public void RewritePath (string path, bool rebaseClientPath);
member this.RewritePath : string * bool -> unit
Public Sub RewritePath (path As String, rebaseClientPath As Boolean)

参数

path
String

内部重写路径。

rebaseClientPath
Boolean

如果重置虚拟路径,则为 true;如果保持虚拟路径不变,则为 false

例外

path 参数为 null

path 参数不在当前应用程序的根目录中。

示例

有关代码示例,请参阅 RewritePath(String) 方法重载。

注解

方法HttpContext.RewritePath(String, Boolean)由 方法调用,HttpContext.RewritePath(String)rebaseClientPath并将 参数设置为 true。 若要确保不修改用于构造资源路径的虚拟路径,请将 参数设置为 rebaseClientPathfalse。 可能需要将 设置为 rebaseClientPathfalse 的常见方案是,需要重写 URL,并且使用主题并将 URL 重定向到位于与请求的资源不同的文件夹中的资源。

如果要在 Web 应用程序中重构页面,并且希望确保为旧 URL 添加书签的用户在移动页面后仍可以使用旧 URL,则 URL 重写非常有用。 URL 重写使你能够以透明方式将请求转发到新页面位置。

如果要使网站能够使用用户更友好且针对搜索引擎进行优化的 URL,则更可靠的替代方法是使用 ASP.NET 路由。 有关详细信息,请参阅 ASP.NET 路由

另请参阅

适用于

RewritePath(String)

使用给定路径重写 URL。

public:
 void RewritePath(System::String ^ path);
public void RewritePath (string path);
member this.RewritePath : string -> unit
Public Sub RewritePath (path As String)

参数

path
String

内部重写路径。

例外

path 参数为 null

path 参数不在当前应用程序的根目录中。

示例

下面的示例演示如何使用 RewritePath 方法使网站能够响应不反映网站中的文件结构的 URL。 第一个代码块是名为 RewritePath.aspx 的 ASP.NET 网页。 它需要查询字符串。 如果网站的名称为 WebSite1,则 URL http://localhost/WebSite1/RewritePath.aspx?page=1 会在浏览器中显示“第 1 页”。 网页后面的代码块是 Application_BeginRequest Global.asax 文件中的事件处理程序。 此代码截获诸如 之类的 http://localhost/WebSite1/page1 URL 的请求,并将其转换为RewritePath.aspx处理前所需的表单。 因此,URL http://localhost/WebSite1/page1 使用在浏览器中显示“Page 1”的查询字符串参数调用RewritePath.aspx。 如果收到等 http://localhost/WebSite1/page1 URL,则会调用 的 RewritePath 重载,以便为 属性提供值 PathInfo 以及查询字符串参数。

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = "Page=" + Request.QueryString["page"] + " PathInfo=" + Request.PathInfo;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        Label1.Text = "Page=" & Request.QueryString("page") & " PathInfo=" & Request.PathInfo
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>
void Application_BeginRequest(Object sender, EventArgs e)
{
    string originalPath = HttpContext.Current.Request.Path.ToLower();
    if (originalPath.Contains("/page1"))
    {
        Context.RewritePath(originalPath.Replace("/page1", "/RewritePath.aspx?page=page1"));
    }
    if (originalPath.Contains("/page2"))
    {
        Context.RewritePath(originalPath.Replace("/page2", "/RewritePath.aspx"), "pathinfo", "page=page2");
    }
}    
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    Dim originalPath As String = HttpContext.Current.Request.Path.ToLower()
    If originalPath.Contains("/page1") Then
        Context.RewritePath(originalPath.Replace("/page1", "/RewritePath.aspx?page=page1"))
    End If
    If originalPath.Contains("/page2") Then
        Context.RewritePath(originalPath.Replace("/page2", "/RewritePath.aspx"), "pathinfo", "page=page2")
    End If
End Sub

注解

方法 RewritePath(String) 将资源请求重定向到与所请求的 URL 指示的路径不同的路径。 如果必须重置虚拟路径,以便正确解析来自客户端的服务器资源请求,请使用此方法的重载,该方法采用 rebaseClientPath 参数并将 参数设置为 false

如果要在 Web 应用程序中重构页面,并且希望确保为旧 URL 添加书签的用户在移动页面后仍可以使用旧 URL,则 URL 重写非常有用。 URL 重写使你能够以透明方式将请求转发到新页面位置。

如果要使网站能够使用用户更友好且针对搜索引擎进行优化的 URL,则更可靠的替代方法是使用 ASP.NET 路由。 有关详细信息,请参阅 ASP.NET 路由

另请参阅

适用于