共用方式為


影像檔管理 (Chart 控制項)

RenderType 屬性設定為 ImageTag 時,Chart 控制項會將呈現的圖表影像儲存成記憶體或磁碟中的檔案 (如需詳細資訊,請參閱圖表影像呈現)。您可以指定 Chart 控制項管理影像檔的方式。您可以使用 ImageStorageMode 屬性來完成這個工作。

ImageStorageMode 屬性中,您可以選擇使用圖表 HTTP 處理常式來管理影像檔,或手動管理影像檔。

使用圖表 HTTP 處理常式

預設的情況下,ImageStorageMode 屬性設定為 UseHttpHandler。這會讓 Chart 控制項使用 Web.config 檔中登錄的 ChartHttpHandler 來管理呈現的圖表影像。

使用圖表 HTTP 處理常式可以:

  • 避免伺服器叢集或多處理序站台發生檔案覆寫衝突。

  • 防止使用者下載為其他使用者呈現的圖表影像,保護所呈現圖表影像的安全性。

  • 將影像檔儲存在記憶體或其他儲存選項,例如 Microsoft SQL Server,減少磁碟作業。

使用方式

當您將 Chart 控制項從 [工具箱] 拖曳到 ASP.NET 頁面的設計介面時,ChartHttpHandler 會自動在 Web.config 檔中登錄為 "ChartImageHandler"。您可以在 <appSettings> 項目中設定 ChartImageHandler 的行為。以下是適用的程式碼區段以及自動產生的設定:

<appSettings>

<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />

</appSettings>

請使用 value 屬性中的參數來設定圖表 HTTP 處理常式。如需每個參數的說明,請參閱下表。

參數

說明

storage

儲存模式。可用的選項有三個:

  • file:將呈現的圖表影像儲存為暫存檔。您還必須在 url 或 dir 參數中指定儲存位置。在伺服器叢集或多處理序站台中,您必須指定 dir 參數。

  • memory:將呈現的圖表影像儲存在執行中處理序的記憶體空間。請不要在伺服器叢集或多處理序站台中使用這個選項。

  • session:將呈現的圖表影像儲存在工作階段變數中。

url

影像儲存位置的相對 URL。如果指定 dir 參數,則會用它來取代 url。

預設值為 "~/"。

dir

影像儲存位置的絕對目錄路徑。這可以是本機路徑或網路路徑。在伺服器叢集環境中,請使用網路路徑,將暫存檔存放在共用位置。系統會為每個暫存檔指派唯一的電腦 ID,以防止不當覆寫檔案。

timeout

呈現的圖表影像的逾時期限 (以秒為單位)。過了這段時間,就會以更新的影像取代影像。

預設值為 30。

handler

自訂 IChartStorageHandler 實作。此值應格式化為完整組件名稱。例如:MyNamespace.MyClass.MyHandler。

privateImages

隱私權保護。設定為 true 時,如果強制使用下列一些識別類型,就只有擁有者才能下載產生的影像:

  • 驗證使用者。

  • 啟用 AnonymousID。

  • 可以使用 SessionID。

預設值為 true。

deleteAfterServicing

從用戶端順利下載後是否應刪除影像。

預設值為 true。

webDevServerUseConfigSettings

使用 Visual Studio 程式開發伺服器在完全信任層級中執行應用程式時,是否要將呈現的圖表影像儲存在記憶體中。

預設值為 true。這表示當您從 Visual Studio 執行 ASP.NET 應用程式時,Web.config 檔中的設定可能沒有作用。

不同信任層級中的組態設定

以下是信任層級的清單,並說明信任層級如何影響 Web.config 檔中的組態設定。

  • 完全信任:所有組態變化均適用。

  • 高度信任:無法偵測 ASP.NET 程式開發伺服器。因此,webDevServerUseConfigSettings 沒有任何作用。

  • 中度信任:同高度信任。

  • 低度信任:除了禁止檔案存取,其餘同高度信任。storage 參數必須設定為 session 或 memory。

  • 最低信任:除了圖表 HTTP 處理常式偵測失敗外,其餘同低度信任。這表示 Web.config 檔中的 ChartImageHandler 金鑰是必要的。

手動管理影像

若要手動管理呈現的圖表影像,請將 ImageStorageMode 屬性設定為 UseImageLocation,然後再將 ImageLocation 屬性設定為絕對或相對路徑。

注意

在這種模式中,每個 Chart 控制項會獨立管理其影像儲存。

ImageLocation 屬性可包含路徑以及某些關鍵字。例如:"~/Temp/ChartPic_#SEQ(300,5)"。這個字串由三個項目所組成:

  • 絕對或相對目錄路徑。例如:"~/Temp/"。

  • 檔案名稱或所有影像檔名稱的開頭文字。例如:"ChartPicture_"。

  • 關鍵字。例如:"#SEQ(300, 5)"。

不具關鍵字的 ImageLocation

如果您指定影像位置但無關鍵字,Chart 控制項會使用單一檔案來處理所有影像呈現。產生的檔案路徑會是目錄加上您指定的開頭文字以及 ImageType 屬性中指定的副檔名。例如:"~/Temp/ChartPicture_.png"。

請注意,如果圖表資料或外觀經常變更,影像檔在傳送到用戶端之前可能就會被覆寫,導致用戶端收到不正確的影像。若要避免這個問題,請使用其中一個關鍵字。

具有關鍵字的 ImageLocation

您可以將三個不同的關鍵字插入 ImageLocation 屬性。

關鍵字

說明

#UID

為每個呈現的圖表影像產生唯一識別項。例如:"~/Temp/ChartPicture#UID"。

使用這個關鍵字可確保伺服器以正確的呈現影像回覆每個頁面要求。您必須手動移除舊檔案。否則,檔案的數目會無止盡成長。

#SEQ(maxFiles,minutes)

產生檔案序號,直至 maxFiles 定義的數字為止,然後再次開始序列並取代序列中的第一個檔案。例如:"Picture_#SEQ(300,5)" 會產生下列檔案名稱 (假設 ImageType 設定為 Png):Picture_000001.jpg、Picture_000002.jpg...

minutes 參數會指定每個檔案在序列中的逾時時間。不過,這不保證檔名在指定期間的有效性。如果檔案在逾時期限超過之前即回收,系統會在應用程式事件記錄檔插入警告訊息。您應將 maxFile 參數設定成夠大的數字,以避免不當覆寫影像檔。

#NOGUIDPARAM

從影像檔的 URL 移除 GUID 字串。例如:"Picture_#SEQ(300,5)#NOGUIDPARAM"。

根據預設,Chart 控制項會將 GUID 字串加入至影像 URL。

影像類型與壓縮

當圖表影像儲存成暫存檔時,若要指定影像類型,請使用 Chart 控制項的 ImageType 屬性。如果您將這個屬性設定為 Jpeg,也可以在 Chart 控制項的 Compression 屬性中指定 JPEG 壓縮。

請參閱

其他資源

圖表影像呈現

使用 Chart 控制項