HttpContext.RewritePath Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przekierowuje żądanie zasobu do innej ścieżki niż ta, która jest wskazywana przez żądany adres URL. RewritePath jest używany w stanie sesji bez plików cookie do usuwania identyfikatorów sesji z adresów URL.
Przeciążenia
RewritePath(String, String, String, Boolean) |
Ponownie zapisuje adres URL przy użyciu podanej ścieżki wirtualnej, informacji o ścieżce, informacji o ciągu zapytania i wartości logicznej określającej, czy ścieżka pliku klienta jest ustawiona na ścieżkę ponownego zapisywania. |
RewritePath(String, String, String) |
Ponownie zapisz adres URL przy użyciu podanej ścieżki, informacji o ścieżce i informacji o ciągu zapytania. |
RewritePath(String, Boolean) |
Ponownie zapisuje adres URL przy użyciu podanej ścieżki i wartości logicznej, która określa, czy ścieżka wirtualna dla zasobów serwera jest modyfikowana. |
RewritePath(String) |
Ponownie zapisz adres URL przy użyciu podanej ścieżki. |
RewritePath(String, String, String, Boolean)
Ponownie zapisuje adres URL przy użyciu podanej ścieżki wirtualnej, informacji o ścieżce, informacji o ciągu zapytania i wartości logicznej określającej, czy ścieżka pliku klienta jest ustawiona na ścieżkę ponownego zapisywania.
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)
Parametry
- filePath
- String
Ścieżka wirtualna do zasobu, który obsługuje żądanie.
- pathInfo
- String
Dodatkowe informacje o ścieżce do użycia dla przekierowania adresu URL. Aby uzyskać więcej informacji, zobacz PathInfo.
- queryString
- String
Ciąg zapytania żądania do użycia na potrzeby przekierowania adresu URL.
- setClientFilePath
- Boolean
true
aby ustawić ścieżkę pliku używaną dla zasobów klienta na wartość parametru filePath
; w przeciwnym razie false
.
Wyjątki
Parametr path
nie znajduje się w katalogu głównym bieżącej aplikacji.
Parametr filePath
nie znajduje się w katalogu głównym bieżącej aplikacji.
Przykłady
Aby zapoznać się z przykładem kodu, zobacz RewritePath(String) przeciążenie metody.
Uwagi
Parametr filePath
nie zawiera zawartości parametru pathInfo
. W przypadku adresu URL http://www.microsoft.com/virdir/page.html/tail
filePath
parametr to http://www.microsoft.com/virdir/page.html
, a pathInfo
parametr jest tail.
Aby upewnić się, że ścieżka wirtualna używana do konstruowania ścieżek do zasobów nie jest modyfikowana, ustaw setClientFilePath
parametr na false
. Typowym scenariuszem, w którym warto ustawić setClientFilePath
false
wartość , jest sytuacja, w której konieczne jest ponowne zapisywanie adresu URL i używanie motywów oraz przekierowywanie adresu URL do zasobu znajdującego się w innym folderze niż żądany zasób.
Ponowne zapisywanie adresów URL jest przydatne, gdy chcesz zmienić strukturę stron w aplikacji internetowej i chcesz upewnić się, że osoby, które mają zakładki ze starymi adresami URL, nadal mogą ich używać po przeniesieniu stron. Ponowne zapisywanie adresów URL umożliwia przezroczyste przekazywanie żądań do nowej lokalizacji strony.
Jeśli chcesz umożliwić witrynie korzystanie z adresów URL, które są bardziej przyjazne dla użytkownika i zoptymalizowane pod kątem aparatów wyszukiwania, bardziej niezawodną alternatywą jest użycie routingu ASP.NET. Aby uzyskać więcej informacji, zobacz ASP.NET Routing.
Zobacz też
Dotyczy
RewritePath(String, String, String)
Ponownie zapisz adres URL przy użyciu podanej ścieżki, informacji o ścieżce i informacji o ciągu zapytania.
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)
Parametry
- filePath
- String
Wewnętrzna ścieżka ponownego zapisywania.
- pathInfo
- String
Dodatkowe informacje o ścieżce zasobu. Aby uzyskać więcej informacji, zobacz PathInfo.
- queryString
- String
Ciąg zapytania żądania.
Wyjątki
Parametr path
nie znajduje się w katalogu głównym bieżącej aplikacji.
Parametr filePath
nie znajduje się w katalogu głównym bieżącej aplikacji.
Przykłady
Aby zapoznać się z przykładem przeciążenia tej metody, zobacz RewritePath(String) przeciążenie metody.
Uwagi
Metoda RewritePath przekierowuje żądanie zasobu do innego zasobu bez zmiany adresu URL.
Parametr filePath
nie zawiera zawartości parametru pathInfo
. W przypadku adresu URL http://www.microsoft.com/virdir/page.html/tail
filePath
parametr to http://www.microsoft.com/virdir/page.html
, a pathInfo
parametr jest tail.
Ponowne zapisywanie adresów URL jest przydatne, gdy chcesz zmienić strukturę stron w aplikacji internetowej i chcesz upewnić się, że osoby, które mają zakładki ze starymi adresami URL, nadal mogą ich używać po przeniesieniu stron. Ponowne zapisywanie adresów URL umożliwia przezroczyste przekazywanie żądań do nowej lokalizacji strony.
Jeśli chcesz umożliwić witrynie korzystanie z adresów URL, które są bardziej przyjazne dla użytkownika i zoptymalizowane pod kątem aparatów wyszukiwania, bardziej niezawodną alternatywą jest użycie routingu ASP.NET. Aby uzyskać więcej informacji, zobacz ASP.NET Routing.
Zobacz też
Dotyczy
RewritePath(String, Boolean)
Ponownie zapisuje adres URL przy użyciu podanej ścieżki i wartości logicznej, która określa, czy ścieżka wirtualna dla zasobów serwera jest modyfikowana.
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)
Parametry
- path
- String
Wewnętrzna ścieżka ponownego zapisywania.
- rebaseClientPath
- Boolean
true
aby zresetować ścieżkę wirtualną; false
aby zachować ścieżkę wirtualną bez zmian.
Wyjątki
Parametr path
to null
.
Parametr path
nie znajduje się w katalogu głównym bieżącej aplikacji.
Przykłady
Aby zapoznać się z przykładem kodu, zobacz RewritePath(String) przeciążenie metody.
Uwagi
Metoda jest wywoływana HttpContext.RewritePath(String, Boolean) przez metodę HttpContext.RewritePath(String) z parametrem ustawionym rebaseClientPath
na true
. Aby upewnić się, że ścieżka wirtualna używana do konstruowania ścieżek do zasobów nie jest modyfikowana, ustaw rebaseClientPath
parametr na false
. Typowym scenariuszem, w którym warto ustawić rebaseClientPath
false
wartość , jest sytuacja, w której konieczne jest ponowne zapisywanie adresu URL i używanie motywów oraz przekierowywanie adresu URL do zasobu znajdującego się w innym folderze niż żądany zasób.
Ponowne zapisywanie adresów URL jest przydatne, gdy chcesz zmienić strukturę stron w aplikacji internetowej i chcesz upewnić się, że osoby, które mają zakładki ze starymi adresami URL, nadal mogą ich używać po przeniesieniu stron. Ponowne zapisywanie adresów URL umożliwia przezroczyste przekazywanie żądań do nowej lokalizacji strony.
Jeśli chcesz umożliwić witrynie korzystanie z adresów URL, które są bardziej przyjazne dla użytkownika i zoptymalizowane pod kątem aparatów wyszukiwania, bardziej niezawodną alternatywą jest użycie routingu ASP.NET. Aby uzyskać więcej informacji, zobacz ASP.NET Routing.
Zobacz też
Dotyczy
RewritePath(String)
Ponownie zapisz adres URL przy użyciu podanej ścieżki.
public:
void RewritePath(System::String ^ path);
public void RewritePath (string path);
member this.RewritePath : string -> unit
Public Sub RewritePath (path As String)
Parametry
- path
- String
Wewnętrzna ścieżka ponownego zapisywania.
Wyjątki
Parametr path
to null
.
Parametr path
nie znajduje się w katalogu głównym bieżącej aplikacji.
Przykłady
W poniższym przykładzie pokazano, jak użyć RewritePath metody , aby umożliwić witrynie sieci Web reagowanie na adresy URL, które nie odzwierciedlają struktury plików w witrynie sieci Web. Pierwszym blokiem kodu jest ASP.NET strona sieci Web o nazwie RewritePath.aspx. Wymaga to ciągu zapytania. Jeśli nazwa witryny to WebSite1, w przeglądarce zostanie wyświetlony adres URL http://localhost/WebSite1/RewritePath.aspx?page=1
"Strona 1". Blok kodu, który jest zgodny ze stroną sieci Web, jest procedurą Application_BeginRequest
obsługi zdarzeń w pliku Global.asax. Ten kod przechwytuje żądania dotyczące adresów URL, takich jak http://localhost/WebSite1/page1
i konwertuje je na formularz wymagany do RewritePath.aspx przed ich przetworzeniem. W związku z tym adres URL http://localhost/WebSite1/page1
wywołuje RewritePath.aspx z parametrem ciągu zapytania, który wyświetla "Strona 1" w przeglądarce. Jeśli adres URL, taki jak http://localhost/WebSite1/page1
odbierany, wywoływane jest przeciążenie RewritePath , które umożliwia podanie wartości dla PathInfo właściwości, a także parametr ciągu zapytania.
<%@ 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
Uwagi
Metoda RewritePath(String) przekierowuje żądanie zasobu do innej ścieżki niż ta, która jest wskazywana przez żądany adres URL. Jeśli musisz zresetować ścieżkę wirtualną tak, aby żądania od klienta dla zasobów serwera zostały poprawnie rozwiązane, użyj przeciążenia tej metody, która przyjmuje rebaseClientPath
parametr i ustaw parametr na false
.
Ponowne zapisywanie adresów URL jest przydatne, gdy chcesz zmienić strukturę stron w aplikacji internetowej i chcesz upewnić się, że osoby, które mają zakładki ze starymi adresami URL, nadal mogą ich używać po przeniesieniu stron. Ponowne zapisywanie adresów URL umożliwia przezroczyste przekazywanie żądań do nowej lokalizacji strony.
Jeśli chcesz umożliwić witrynie korzystanie z adresów URL, które są bardziej przyjazne dla użytkownika i zoptymalizowane pod kątem aparatów wyszukiwania, bardziej niezawodną alternatywą jest użycie routingu ASP.NET. Aby uzyskać więcej informacji, zobacz ASP.NET Routing.