天天看點

MSDN一定要好好用,之狀态管理

困擾已久的問題,MSDN講的太清楚了,好!!粘到這裡來紀念。

ASP.NET 狀态管理建議

狀态管理是您對同一頁或不同頁的多個請求維護狀态和頁資訊的過程。與所有基于 HTTP 的技術一樣,Web 窗體頁是無狀态的,這意味着它們不自動訓示序列中的請求是否全部來自相同的用戶端,或者單個浏覽器執行個體是否一直在檢視頁或站點。此外,到伺服器的每一往返過程都将銷毀并重新建立頁;是以,如果超出了單個頁的生命周期,頁資訊将不存在。有關伺服器往返過程和 Web 窗體頁生命周期的更多資訊,請參見 ASP.NET 頁生命周期概述。

ASP.NET 提供多種方式來在伺服器往返過程之間維護狀态。對這些狀态管理選項的選擇主要取決于您的應用程式,并且應基于以下條件:

  • 需要存儲的資訊量有多大?
  • 用戶端是接受持久性的還是記憶體中的 Cookie?
  • 要将資訊存儲在用戶端還是伺服器上?
  • 資訊是否是敏感資訊?
  • 您對應用程式設定了什麼樣的性能和帶寬條件?
  • 目标浏覽器和裝置具有什麼樣的功能?
  • 您是否需要儲存基于使用者的資訊?
  • 資訊需要存儲多長時間?
  • 您使用 Web 場(多個伺服器)、Web 園(一個計算機上的多個程序)還是單個程序來運作應用程式?

用戶端狀态管理選項

使用用戶端選項存儲頁資訊不使用伺服器資源。這些選項往往具有最低的安全性但具有較快的伺服器性能,因為對伺服器資源的要求是适度的。但是,由于必須将資訊發送到用戶端來進行存儲,是以對于以這種方式可以存儲多少資訊存在一定的客觀限制。

以下是 ASP.NET 支援的用戶端狀态管理選項:

  • 視圖狀态
  • 控件狀态
  • 隐藏域
  • Cookie
  • 查詢字元串
視圖狀态

Web 窗體頁提供 ViewState 屬性作為内置結構,在對同一頁的多個請求間自動保留值。視圖狀态作為頁中的隐藏域來進行維護。有關更多資訊,請參見 ASP.NET 狀态管理概述。

可以使用視圖狀态在頁回發到自身時跨越往返過程存儲您自己的頁特定值。例如,如果您的應用程式正在維護使用者特定的資訊(即,該資訊在頁上使用,但不是任何控件所必需的部分),則可以使用視圖狀态存儲該資訊。

使用視圖狀态的優點

  • 不需要任何伺服器資源   視圖狀态包含在頁代碼内的結構中。
  • 實作簡單   視圖狀态無需使用任何自定義程式設計。預設情況下對控件啟用狀态資料的維護。
  • 增強的安全功能   視圖狀态中的值經過哈希計算和壓縮,并且針對 Unicode 實作進行編碼,其安全性要高于使用隐藏域。

使用視圖狀态的缺點

  • 性能注意事項   由于視圖狀态存儲在頁本身,是以如果存儲較大的值,使用者顯示頁和發送頁時的速度可能會減慢。尤其是對移動裝置,其帶寬通常是有限的。
  • 裝置限制   移動裝置可能沒有足夠的記憶體容量來存儲大量的視圖狀态資料。
  • 潛在的安全風險   視圖狀态存儲在頁上的一個或多個隐藏域中。雖然視圖狀态以哈希格式存儲資料,但它可以被篡改。如果直接檢視頁輸出源,可以看到隐藏域中的資訊,這導緻潛在的安全性問題。有關更多資訊,請參見 ASP.NET Web 應用程式安全和 Web 應用程式的基本安全實施政策。

有關使用視圖狀态的更多資訊,請參見視圖狀态概述。

控件狀态

ASP.NET 頁架構提供了 ControlState 屬性作為在伺服器往返過程中存儲自定義控件資料的方法。例如,如果您編寫的自定義控件使用多個不同的頁籤來顯示不同的資訊,為使此控件能夠按預期方式工作,控件需要知道在往返過程中哪個頁籤被選中。視圖狀态可用于此目的,但是開發人員可能在頁級将視圖狀态關閉,這實際上破壞了您的控件。與視圖狀态不同,控件狀态不能被關閉,是以它提供了存儲控件狀态資料的更可靠方法。

使用控件狀态的優點

  • 不需要任何伺服器資源   預設情況下,控件狀态存儲在頁上的隐藏域中。
  • 可靠性   因為控件狀态不像視圖狀态那樣可以關閉,控件狀态是管理控件的狀态的更可靠方法。
  • 通用性   可以編寫自定義擴充卡來控制如何存儲控件狀态資料和控件狀态資料的存儲位置。

使用控件狀态的缺點

  • 需要一些程式設計   雖然 ASP.NET 頁架構為控件狀态提供了基礎,但是控件狀态是一個自定義的狀态保持機制。為了充分利用控件狀态,您必須編寫代碼來儲存和加載控件狀态。
隐藏域

可以在頁上的隐藏域中存儲特定于頁的資訊,作為維護頁的狀态的一種方式。有關隐藏域的更多資訊,請參見 ASP.NET 狀态管理建議。

如果使用隐藏域,最好在用戶端上隻存儲少量經常更改的資料。

注意

如果使用隐藏域,則必須使用 HTTP POST 方法向伺服器送出頁,而不是使用通過頁 URL 請求該頁的方法(HTTP GET 方法)向伺服器送出頁。

使用隐藏域的優點

  • 不需要任何伺服器資源   隐藏域在頁上存儲和讀取。
  • 廣泛的支援   幾乎所有浏覽器和用戶端裝置都支援具有隐藏域的窗體。
  • 實作簡單   隐藏域是标準的 HTML 控件,不需要複雜的程式設計邏輯。

使用隐藏域的缺點

  • 潛在的安全風險   隐藏域可以被篡改。如果直接檢視頁輸出源,可以看到隐藏域中的資訊,這導緻潛在的安全性問題。您可以手動加密和解密隐藏域的内容,但這需要額外的編碼和開銷。如果關注安全,請考慮使用基于伺服器的狀态機制,進而不将敏感資訊發送到用戶端。有關更多資訊,請參見 ASP.NET Web 應用程式安全和 Web 應用程式的基本安全實施政策。
  • 簡單的存儲結構   隐藏域不支援複雜資料類型。隐藏域隻提供一個字元串值域存放資訊。若要存儲多個值,必須實作分隔的字元串以及用來分析那些字元串的代碼。您可以手動分别将複雜資料類型序列化為隐藏域以及将隐藏域反序列化為複雜資料類型。但是,這需要額外的代碼來實作。如果您需要将複雜資料類型存儲在用戶端上,請考慮使用視圖狀态。視圖狀态内置了序列化,并且将資料存儲在隐藏域中。
  • 性能注意事項   由于隐藏域存儲在頁本身,是以如果存儲較大的值,使用者顯示頁和發送頁時的速度可能會減慢。
  • 存儲限制   如果隐藏域中的資料量過大,某些代理和防火牆将阻止對包含這些資料的頁的通路。因為最大數量會随所采用的防火牆和代理的不同而不同,較大的隐藏域可能會出現偶發性問題。如果您需要存儲大量的資料項,請考慮執行下列操作之一:
    • 将每個項放置在單獨的隐藏域中。
    • 使用視圖狀态并打開視圖狀态分塊,這樣會自動将資料分割到多個隐藏域。
    • 不将資料存儲在用戶端上,将資料保留在伺服器上。向用戶端發送的資料越多,您的應用程式的表面響應時間越慢,因為浏覽器需要下載下傳或發送更多的資料。
Cookie

Cookie 用于在用戶端上存儲少量經常更改的資訊。這些資訊與請求一起發送到伺服器。有關建立和讀取 Cookie 的詳細資訊,請參見 ASP.NET Cookie 概述。

使用 Cookie 的優點

  • 可配置到期規則   Cookie 可以在浏覽器會話結束時到期,或者可以在用戶端計算機上無限期存在,這取決于用戶端的到期規則。
  • 不需要任何伺服器資源   Cookie 存儲在用戶端并在發送後由伺服器讀取。
  • 簡單性   Cookie 是一種基于文本的輕量結構,包含簡單的鍵值對。
  • 資料持久性   雖然用戶端計算機上 Cookie 的持續時間取決于用戶端上的 Cookie 過期處理和使用者幹預,Cookie 通常是用戶端上持續時間最長的資料保留形式。

使用 Cookie 的缺點

  • 大小受到限制   大多數浏覽器對 Cookie 的大小有 4096 位元組的限制,盡管在當今新的浏覽器和用戶端裝置版本中,支援 8192 位元組的 Cookie 大小已愈發常見。
  • 使用者配置為禁用   有些使用者禁用了浏覽器或用戶端裝置接收 Cookie 的能力,是以限制了這一功能。
  • 潛在的安全風險   Cookie 可能會被篡改。使用者可能會操縱其計算機上的 Cookie,這意味着會對安全性造成潛在風險或者導緻依賴于 Cookie 的應用程式失敗。另外,雖然 Cookie 隻能被将它們發送到用戶端的域通路,曆史上黑客已經發現從使用者計算機上的其他域通路 Cookie 的方法。您可以手動加密和解密 Cookie,但這需要額外的編碼,并且因為加密和解密需要耗費一定的時間而影響應用程式的性能。有關更多資訊,請參見 ASP.NET Web 應用程式安全和 Web 應用程式的基本安全實施政策。

    注意

    Cookie 通常用于為已知使用者自定義内容的個性化情況。在大多數此類情況中,Cookie 是作為“辨別”而不是“身份驗證”。是以,通常保護用于辨別的 Cookie 的方法是在 Cookie 中存儲使用者名、帳戶名或唯一使用者 ID(例如 GUID),然後用以通路站點的使用者個性化結構中的資訊。

查詢字元串

查詢字元串是在頁 URL 的結尾附加的資訊。有關更多資訊,請參見 ASP.NET 狀态管理概述。

可以使用查詢字元串來通過 URL 将資料送出回您的頁或另一頁上。查詢字元串提供一種維護某些狀态資訊的簡單但有限的方法。例如,它們是将資訊從一頁傳送到另一頁的簡便的方法(例如,将産品号傳遞到将處理該産品号的另一頁)。

使用查詢字元串的優點

  • 不需要任何伺服器資源   查詢字元串包含在對特定 URL 的 HTTP 請求中。
  • 廣泛的支援   幾乎所有的浏覽器和用戶端裝置均支援使用查詢字元串傳遞值。
  • 實作簡單   ASP.NET 完全支援查詢字元串方法,其中包含了使用 HttpRequest 對象的 Params 屬性讀取查詢字元串的方法。

使用查詢字元串的缺點

  • 潛在的安全性風險   使用者可以通過浏覽器使用者界面直接看到查詢字元串中的資訊。使用者可将此 URL 設定為書簽或發送給别的使用者,進而通過此 URL 傳遞查詢字元串中的資訊。如果您擔心查詢字元串中的任何敏感資料,請考慮使用窗體(使用 POST 而不是查詢字元串)中的隐藏域。有關更多資訊,請參見 ASP.NET Web 應用程式安全和 Web 應用程式的基本安全實施政策。
  • 有限的容量   有些浏覽器和用戶端裝置對 URL 的長度有 2083 個字元的限制。
用戶端方法狀态管理摘要

下表列出了 ASP.NET 可用的用戶端狀态管理選項,并提供了有關何時使用每個選項的建議。

狀态管理選項

使用建議

視圖狀态

當您需要存儲少量回發到自身的頁資訊時使用。使用 ViewState 屬性可提供具有基本安全性的功能。

控件狀态

當您需要在伺服器的往返過程間存儲少量控件狀态資訊時使用。

隐藏域

當您需要存儲少量回發到自身或另一頁的頁資訊時使用,也可以在不存在安全性問題時使用。

注意

隻能在送出到伺服器的頁上使用隐藏域。

Cookie

當您需要在用戶端存儲少量資訊以及不存在安全性問題時使用。

查詢字元串

當您将少量資訊從一頁傳輸到另一頁以及不存在安全性問題時使用。

注意

隻有在請求同一頁,或通過連結請求另一頁時,才能使用查詢字元串。

伺服器端狀态管理選項

存儲頁資訊的伺服器端選項往往比用戶端選項具有更高的安全性,但它們可能使用更多的 Web 伺服器資源,這可能在資訊存儲量較大時導緻伸縮性方面的問題。ASP.NET 提供幾種選項來實作伺服器端狀态管理。有關更多資訊,請參見 ASP.NET 狀态管理概述。

以下是 ASP.NET 支援的伺服器端狀态管理選項:

  • 應用程式狀态
  • 會話狀态
  • 配置檔案屬性
  • 資料庫支援
應用程式狀态

ASP.NET 通過 HttpApplicationStatefrlrfSystemWebHttpApplicationStateClassTopic 類将應用程式狀态提供為一種存儲全局應用程式特定資訊(對于整個應用程式都可見)的方法。應用程式狀态變量實際上是 ASP.NET 應用程式的全局變量。有關更多資訊,請參見 ASP.NET 應用程式狀态概述

您可以在應用程式狀态中存儲應用程式特定的值,應用程式狀态将由伺服器來管理。有關更多資訊,請參見 ASP.NET 狀态管理概述。

由多個會話共享并且不經常更改的資料是插入到應用程式狀态變量的理想資料。

使用應用程式狀态的優點

  • 實作簡單   應用程式狀态易于使用,為 ASP 開發人員所熟悉,并且與其他 .NET Framework 類一緻。
  • 應用程式範圍   由于應用程式狀态可供應用程式中的所有頁來通路,是以在應用程式狀态中存儲資訊可能意味着僅保留資訊的一個副本(例如,相對于在會話狀态或在單獨頁中儲存資訊的多個副本)。

使用應用程式狀态的缺點

  • 應用程式範圍   應用程式狀态的範圍可能也是一項缺點。在應用程式狀态中存儲的變量僅對于該應用程式正在其中運作的特定程序而言是全局的,并且每一應用程式程序可能具有不同的值。是以,不能依賴應用程式狀态來存儲唯一值或更新 Web 場和 Web 園伺服器配置中的全局計數器。
  • 資料持續性有限   因為在應用程式狀态中存儲的全局資料是易失的,是以如果包含這些資料的 Web 伺服器程序被損壞(如因伺服器崩潰、更新或關閉而損壞),将丢失這些資料。
  • 資源要求   應用程式狀态需要伺服器記憶體,這可能會影響伺服器的性能以及應用程式的可伸縮性。

應用程式狀态的精心設計和實作可以提高 Web 應用程式性能。例如,如果将常用的、相關的靜态資料集放置到應用程式狀态中,則可以通過減少對資料庫的資料請求總數來提高站點性能。但是,這裡存在一種性能平衡。當伺服器負載增加時,包含大塊資訊的應用程式狀态變量就會降低 Web 伺服器的性能。在移除或替換值之前,将不釋放在應用程式狀态中存儲的變量所占用的記憶體。是以,最好隻将應用程式狀态變量用于更改不頻繁的小型資料集。有關更多資訊,請參見開發高性能的 ASP.NET 應用程式。

會話狀态

ASP.NET 提供了一種會話狀态,該會話狀态可作為 HttpSessionState 類或存儲會話特定資訊(僅在該會話中可見)的方法來使用。ASP.NET 會話狀态将一個有限時間視窗内來自同一浏覽器的請求辨別為一個會話,并在該會話持續期間保留變量的值。有關更多資訊,請參見 ASP.NET 狀态管理概述和會話狀态概述。

可以在會話狀态中存儲會話特定的值和對象,該會話狀态對象将由伺服器來進行管理并可用于浏覽器或用戶端裝置。存儲在會話狀态變量中的理想資料是特定于單獨會話的短期的、敏感的資料。

使用會話狀态的優點

  • 實作簡單   會話狀态功能易于使用,為 ASP 開發人員所熟悉,并且與其他 .NET Framework 類一緻。
  • 會話特定的事件   會話管理事件可以由應用程式引發和使用。
  • 資料持久性   放置于會話狀态變量中的資料可以經受得住 Internet 資訊服務 (IIS) 重新啟動和輔助程序重新啟動,而不丢失會話資料,這是因為這些資料存儲在另一個程序空間中。此外,會話狀态資料可跨多程序保持(例如在 Web 場或 Web 園中)。
  • 平台可伸縮性   會話狀态可在多計算機和多程序配置中使用,因而優化了可伸縮性方案。
  • 無需 Cookie 支援   盡管會話狀态最常見的用途是與 Cookie 一起向 Web 應用程式提供使用者辨別功能,但會話狀态可用于不支援 HTTP Cookie 的浏覽器。但是,使用無 Cookie 的會話狀态需要将會話辨別符放置在查詢字元串中(同樣會遇到本主題在查詢字元串一節中陳述的安全問題)。有關使用無 Cookie 會話狀态的更多資訊,請參見配置 ASP.NET 應用程式。
  • 可擴充性   您可通過編寫自己的會話狀态提供程式自定義和擴充會話狀态。然後可以通過多種資料存儲機制(例如資料庫、XML 檔案甚至 Web 服務)将會話狀态資料以自定義資料格式存儲。有關更多資訊,請參見實作會話狀态存儲提供程式。

使用會話狀态的缺點

  • 性能注意事項   會話狀态變量在被移除或替換前保留在記憶體中,因而可能降低伺服器性能。如果會話狀态變量包含諸如大型資料集之類的資訊塊,則可能會因伺服器負荷的增加影響 Web 伺服器的性能。
配置檔案屬性

ASP.NET 提供了一個稱為配置檔案屬性的功能,可讓您存儲特定于使用者的資料。除了當使用者的會話過期時配置檔案資料不丢失這點與會話狀态不同外,它與會話狀态類似。配置檔案屬性功能使用 ASP.NET 配置檔案,ASP.NET 配置檔案以固定的格式存儲并與單個使用者相關聯。ASP.NET 配置檔案可讓您輕松地管理使用者資訊,而無需建立和維護自己的資料庫。此外,配置檔案使用了一個強類型 API,您可以在應用程式中的任何位置通路該 API,進而使用使用者資訊。您可以在配置檔案中存儲任何類型的對象。ASP.NET 配置檔案功能提供了一個通用存儲系統,使您能夠定義和維護幾乎任何類型的資料,同時仍可用類型安全的方式使用資料。有關更多資訊,請參見 ASP.NET 配置檔案屬性概述。

使用配置檔案屬性的優點

  • 資料持久性   放置在配置檔案屬性中的資料在 IIS 和輔助程序重新啟動過程中得以保留而不會丢失資料,因為資料存儲在一個外部機制中。此外,配置檔案屬性可跨多程序保持(例如在 Web 場或 Web 園中)。
  • 平台可伸縮性   配置檔案屬性可在多計算機和多程序配置中使用,因而優化了可伸縮性方案。
  • 可擴充性   為了使用配置檔案屬性,您必須對配置檔案提供程式進行配置。ASP.NET 提供了一個 SqlProfileProvider 類,使您可以将配置檔案資料存儲在 SQL 資料庫中,但您也可以建立自己的配置檔案提供程式類将配置檔案資料按自定義格式存儲到自定義存儲機制中,例如 XML 檔案甚至 Web 服務。有關更多資訊,請參見 ASP.NET 配置檔案提供程式和實作配置檔案提供程式。

使用配置檔案屬性的缺點

  • 性能注意事項   配置檔案屬性通常比使用會話狀态慢,因為前者将資料持久儲存到資料儲存設備而非記憶體中。
  • 額外的配置要求   與會話狀态不同,配置檔案屬性功能需要使用相當數量的配置。若要使用配置檔案屬性,您不僅要對配置檔案提供程式進行配置,還要預先配置您想要存儲的所有配置檔案屬性。有關更多資訊,請參見 ASP.NET 配置檔案屬性概述和定義 ASP.NET 配置檔案屬性。
  • 資料維護   配置檔案屬性需要一定的維護。因為配置檔案資料持久儲存到儲存設備中,是以必須確定在資料陳舊時,應用程式調用由配置檔案提供程式提供的相應清理機制。
資料庫支援

在某些情況中,您可能希望使用資料庫支援來維護網站上的狀态。通常,資料庫支援與 Cookie 或會話狀态結合在一起使用。例如,對于電子商務網站,普遍使用關系資料庫維護狀态資訊,其原因是:

  • 安全性
  • 個性化
  • 一緻性
  • 資料挖掘

下面是支援 Cookie 的資料庫網站的常見功能:

  • 安全性   通路者将帳戶名稱和密碼鍵入到站點登入頁中。站點結構通過登入值查詢資料庫以确定該使用者是否有權使用您的站點。如果資料庫确認該使用者資訊有效,網站将把包含該使用者的唯一 ID 的有效 Cookie 分發到用戶端計算機上。站點授予該使用者通路權限。
  • 個性化   通過站點中存儲的安全性資訊,您的站點能夠借助讀取用戶端計算機上的 Cookie 來區分站點上的每一使用者。通常,站點在資料庫中具有資訊,描述使用者的首選項(由唯一 ID 辨別)。此關系通稱作個性化。站點可以使用在 Cookie 中包含的唯一 ID 獲知使用者的首選項,然後向使用者提供與使用者的特定願望相關并在一段時間内對使用者首選項作出反應的内容和資訊。
  • 一緻性   如果您已建立了一個商業網站,您可能想要在站點上保留所購買的物品和服務的交易記錄。這些資訊能夠可靠地儲存在您的資料庫中并通過使用者的唯一 ID 來引用。它可用于确定購買交易是否完成,還可确定如果購買交易失敗所應采取的操作步驟。這些資訊還可用于通知使用者使用您的站點所下的訂單的狀态。
  • 資料挖掘   有關站點使用、通路者或産品交易的資訊能夠可靠地存儲在資料庫中。例如,業務發展部門可能希望使用從該站點收集的這些資料确定下一年的産品線或分銷政策。市場營銷部門可能希望檢視有關您的站點的使用者的人口統計資訊。設計和支援部門可能希望檢視交易并記下購買過程可以改進的區域。諸如 Microsoft SQL Server 之類的大多數企業級關系資料庫提供了可适用于大多數資料挖掘項目的可擴充工具集。

在上述方案中通過将網站設計為在每一一般性階段使用唯一 ID 重複查詢該資料庫,該站點對狀态進行維護。在此方法中,使用者感受到站點正記住和響應其本人。

使用資料庫維護狀态的優點

  • 安全性   通路資料庫需要嚴格的身份驗證和授權。
  • 存儲容量   可以根據需要在資料庫中存儲盡可能多的資訊。
  • 資料持久性   可以根據需要在盡可能長的時間記憶體儲資料庫資訊,這些資訊不受 Web 伺服器可用性的影響。
  • 可靠性和資料完整性   資料庫包括多種用于維護有效資料的功能,其中包括觸發器和引用完整性、事務等。通過在資料庫中(而不是在會話狀态等對象中)儲存有關事務的資訊,可以更為友善地從錯誤恢複。
  • 可通路性   存儲在資料庫中的資料可供衆多的資訊處理工具通路。
  • 廣泛的支援   有大量資料庫工具可供使用,并且有許多自定義配置可供使用。

使用資料庫維護狀态的缺點

  • 複雜性   使用資料庫支援狀态管理需要更複雜的硬體和軟體配置。
  • 性能注意事項   不佳的關系資料模型結構可能導緻可伸縮性問題。此外,對資料庫執行過多的查詢可能會影響伺服器性能。
伺服器端方法狀态管理摘要

下表列出了 ASP.NET 可用的伺服器端狀态管理選項,并提供了有關何時使用每種選項的建議。

狀态管理選項

使用建議

應用程式狀态

可在以下情況下使用:存儲由多個使用者使用且更改不頻繁的全局資訊,而且不存在安全性問題。不要在應用程式狀态中存儲大量的資訊。

會話狀态

可在以下情況下使用:存儲特定于單獨會話的短期資訊,并且需要較高的安全性。不要在會話狀态中存儲大量的資訊。需要注意,将為應用程式中每一會話的生存期建立并維護會話狀态對象。在支援許多使用者的應用程式中,這可能會占用大量伺服器資源并影響可縮放性。

配置檔案屬性

可在以下情況下使用:存儲需要在使用者會話過期後保留、并在對應用程式的後續通路中需要再次檢索的特定于使用者的資訊。

資料庫支援

可在以下情況下使用:存儲大量資訊,管理交易,或者資訊必須可以經受得住應用程式和會話重新啟動。資料挖掘十分重要,并且需要較高的安全性。

請參見

概念 ASP.NET 狀态管理概述

ASP.NET 狀态管理的新增功能

ASP.NET Cookie 概述

視圖狀态概述

ASP.NET 配置檔案屬性概述

會話狀态概述

ASP.NET 應用程式狀态概述

要提出有關“幫助”或本産品其他功能的建議或錯誤報告,請轉到回報站點。