HttpContext.RewritePath Metoda

Definicja

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 wyszukiwarek, 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 wyszukiwarek, 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 wyszukiwarek, 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 zapisywania pliku RewritePath.aspx przed ich przetworzeniem. W związku z tym adres URL http://localhost/WebSite1/page1 wywołuje parametr 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 wyszukiwarek, bardziej niezawodną alternatywą jest użycie routingu ASP.NET. Aby uzyskać więcej informacji, zobacz ASP.NET Routing.

Zobacz też

Dotyczy