HttpContext.RewritePath Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перенаправляет запрос ресурса по пути, отличному от указанного в запрошенном URL-адресе. RewritePath используется в состоянии сеанса без куки-файлов, чтобы отделять ИД сеансов от URL-адресов.
Перегрузки
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
Значение true
для присвоения пути к файлу, используемому для ресурсов клиента, значения параметра filePath
; в противном случае — значение false
.
Исключения
Параметр path
отсутствует в корневом каталоге текущего приложения.
Параметр filePath
отсутствует в корневом каталоге текущего приложения.
Примеры
Пример кода см. в разделе Перегрузка RewritePath(String) метода.
Комментарии
Параметр filePath
не включает содержимое pathInfo
параметра. Для URL-адреса http://www.microsoft.com/virdir/page.html/tail
filePath
параметр имеет значение http://www.microsoft.com/virdir/page.html
, а pathInfo
параметр — tail.
Чтобы виртуальный путь, используемый для создания путей к ресурсам, не был изменен, задайте setClientFilePath
для параметра значение false
. Распространенный сценарий, в котором может потребоваться задать значение setClientFilePath
false
, — это когда необходимо переписать URL-адрес, а вы используете темы и перенаправляете URL-адрес в ресурс, расположенный в папке, отличной от запрошенного ресурса.
Перезапись URL-адресов полезна, если требуется реструктурировать страницы в веб-приложении и вы хотите убедиться, что пользователи, которые добавили старые URL-адреса в закладки, по-прежнему могут использовать их после перемещения страниц. Переопределение URL-адресов позволяет прозрачно пересылать запросы в новое расположение страницы.
Если вы хотите, чтобы сайт использовал URL-адреса, которые более удобны и оптимизированы для поисковых систем, более надежной альтернативой является использование ASP.NET маршрутизации. Дополнительные сведения см. в разделе ASP.NET маршрутизации.
См. также раздел
- Маршрутизация 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
filePath
параметр имеет значение http://www.microsoft.com/virdir/page.html
, а pathInfo
параметр — tail.
Перезапись URL-адресов полезна, если требуется реструктурировать страницы в веб-приложении и вы хотите убедиться, что пользователи, которые добавили старые URL-адреса в закладки, по-прежнему могут использовать их после перемещения страниц. Переопределение URL-адресов позволяет прозрачно пересылать запросы в новое расположение страницы.
Если вы хотите, чтобы сайт использовал URL-адреса, которые более удобны и оптимизированы для поисковых систем, более надежной альтернативой является использование ASP.NET маршрутизации. Дополнительные сведения см. в разделе ASP.NET маршрутизации.
См. также раздел
- Маршрутизация 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
. Чтобы виртуальный путь, используемый для создания путей к ресурсам, не был изменен, задайте rebaseClientPath
для параметра значение false
. Распространенный сценарий, в котором может потребоваться задать значение rebaseClientPath
false
, — это когда необходимо переписать URL-адрес, а вы используете темы и перенаправляете URL-адрес в ресурс, расположенный в папке, отличной от запрошенного ресурса.
Перезапись URL-адресов полезна, если требуется реструктурировать страницы в веб-приложении и вы хотите убедиться, что пользователи, которые добавили старые URL-адреса в закладки, по-прежнему могут использовать их после перемещения страниц. Переопределение URL-адресов позволяет прозрачно пересылать запросы в новое расположение страницы.
Если вы хотите, чтобы сайт использовал URL-адреса, которые более удобны и оптимизированы для поисковых систем, более надежной альтернативой является использование ASP.NET маршрутизации. Дополнительные сведения см. в разделе ASP.NET маршрутизации.
См. также раздел
- Маршрутизация 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-адреса, которые не отражают структуру файлов на веб-сайте. Первый блок кода — это веб-страница ASP.NET с именем RewritePath.aspx. Для этого требуется строка запроса. Если сайт имеет имя WebSite1, в браузере отображается URL-адрес http://localhost/WebSite1/RewritePath.aspx?page=1
"Страница 1". Блок кода, следующий за веб-страницей, является обработчиком Application_BeginRequest
событий в файле Global.asax. Этот код перехватывает запросы на URL-адреса, такие как , http://localhost/WebSite1/page1
и преобразует их в форму, необходимую для RewritePath.aspx перед их обработкой. Таким образом, URL-адрес http://localhost/WebSite1/page1
вызывает RewritePath.aspx с параметром строки запроса, который отображает "Страница 1" в браузере. Если получен URL-адрес, например http://localhost/WebSite1/page1
, вызывается перегрузка 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
.
Перезапись URL-адресов полезна, если требуется реструктурировать страницы в веб-приложении и вы хотите убедиться, что пользователи, которые добавили старые URL-адреса в закладки, по-прежнему могут использовать их после перемещения страниц. Переопределение URL-адресов позволяет прозрачно пересылать запросы в новое расположение страницы.
Если вы хотите, чтобы сайт использовал URL-адреса, которые более удобны и оптимизированы для поисковых систем, более надежной альтернативой является использование ASP.NET маршрутизации. Дополнительные сведения см. в разделе ASP.NET маршрутизации.
См. также раздел
- Маршрутизация ASP.NET
- Пошаговое руководство. Использование маршрутизации ASP.NET в приложении веб-форм