Gestione dei file di immagine
Se la proprietà RenderType è impostata su ImageTag, il controllo Chart salva le immagini dei grafici sottoposte a rendering in forma di file in memoria o su disco (per ulteriori informazioni, vedere Rendering di immagini di grafici). È possibile specificare il modo in cui il controllo Chart gestirà i file di immagine. A questo scopo, utilizzare la proprietà ImageStorageMode.
La proprietà ImageStorageMode consente di scegliere se utilizzare il gestore HTTP grafico oppure gestire i grafici in modo manuale.
Utilizzo del gestore HTTP grafico
Per impostazione predefinita, la proprietà ImageStorageMode è impostata su UseHttpHandler. Di conseguenza il controllo Chart utilizzerà l'oggetto ChartHttpHandler registrato nel file Web.config per la gestione delle immagini dei grafici sottoposte a rendering.
Utilizzare il gestore HTTP grafico per:
evitare sovrapposizioni in un cluster di server o in un sito con più processi;
proteggere la sicurezza delle immagini dei grafici sottoposte a rendering evitando che un utente sia in grado di scaricare immagini di grafici di cui è stato eseguito il rendering per altri utenti;
ridurre la quantità di operazioni su disco archiviando i file di immagine in memoria on in altre opzioni di memorizzazione, come ad esempio Microsoft SQL Server.
Utilizzo
Quando si trascina un controllo Chart dalla Casella degli strumenti alla superficie di disegno della pagina ASP.NET, l'oggetto ChartHttpHandler viene registrato automaticamente come "ChartImageHandler" nel file Web.config. È possibile configurare il comportamento di ChartImageHandler nell'elemento <appSettings>. Di seguito viene fornita la sezione di codice applicabile con le impostazioni generate in modo automatico.
<appSettings>
<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
</appSettings>
Utilizzare i parametri nell'attributo value per configurare il gestore HTTP grafico. Vedere la tabella riportata di seguito per una descrizione di ciascun parametro.
Parametro |
Descrizione |
---|---|
storage |
Modalità di archiviazione Sono disponibili le tre opzioni riportate di seguito.
|
url |
URL relativo della posizione di archiviazione dell'immagine. Se viene specificato il parametro dir, verrà utilizzato al posto del parametro url. Il valore predefinito è "~/". |
dir |
Percorso assoluto della directory della posizione di archiviazione dell'immagine. Può essere sia un percorso locale che un percorso di rete. In un ambiente con cluster di server, utilizzare un percorso di rete per mantenere i file temporanei in una posizione condivisa. A ciascun file temporaneo viene assegnato un ID computer univoco per evitare sovrapposizioni inappropriate dei file. |
timeout |
Periodo di timeout espresso in secondi per le immagini dei grafici sottoposte a rendering. Allo scadere di questo periodo, un'immagine potrà essere sostituita da un'immagine più aggiornata. Il valore predefinito è 30. |
handler |
Implementazione personalizzata di IChartStorageHandler. Il valore deve essere formattato come un nome di assembly completo. Ad esempio: MyNamespace.MyClass.MyHandler. |
privateImages |
Tutela della privacy. Se impostato su true, l'immagine generata potrà essere scaricata solo dal rispettivo proprietario, quando sono applicati alcuni dei tipi di identificazione riportati di seguito:
Il valore predefinito è true. |
deleteAfterServicing |
Determina se l'immagine deve essere eliminata dopo aver eseguito lo scaricamento da un client. Il valore predefinito è true. |
webDevServerUseConfigSettings |
Determina se le immagini dei grafici sottoposte a rendering verranno archiviate in memoria durante l'esecuzione dell'applicazione con livello di attendibilità totale utilizzando un server di sviluppo Visual Studio. Il valore predefinito è true. Ciò può significare che le impostazioni nel file Web.config non hanno effetto se l'applicazione ASP.NET viene eseguita da Visual Studio. |
Impostazioni di configurazione nei diversi livelli di attendibilità
Di seguito è riportato un elenco dei vari livelli di attendibilità e dei rispettivi effetti sulle impostazioni di configurazione nel file Web.config.
Attendibilità totale: sono applicabili tutte le variazioni di configurazione.
Attendibilità alta: non è possibile rilevare il server di sviluppo ASP.NET. Pertanto, il parametro webDevServerUseConfigSettings non ha effetto.
Attendibilità media: come per il livello di attendibilità alta.
Attendibilità bassa: come per il livello di attendibilità alta, tranne per il fatto che non è consentito l'accesso ai file. È necessario che il parametro storage sia impostato su session o memory.
Attendibilità minima: come per il livello di attendibilità bassa, tranne per il fatto che non è possibile rilevare il gestore HTTP grafico. Pertanto, l'utilizzo della chiave ChartImageHandler nel file Web.config è obbligatorio.
Gestione manuale delle immagini
Per gestire in modo manuale le immagini dei grafici sottoposte a rendering; impostare la proprietà ImageStorageMode su UseImageLocation, quindi impostare la proprietà ImageLocation su un percorso assoluto o relativo.
Nota
In questo modo, ciascun controllo Chart gestirà in modo indipendente l'archiviazione della rispettiva immagine.
La proprietà ImageLocation può contenere il percorso nonché determinate parole chiave. Ad esempio: "~/Temp/ChartPic_#SEQ(300,5)". Questa stringa è costituita da tre elementi:
il percorso assoluto o relativo della directory, ad esempio, "~/Temp/";
il nome del file o il testo iniziale di tutti i nomi di file di immagine, ad esempio, "ChartPicture_";
una parola chiave, ad esempio, "#SEQ(300, 5)".
Posizione dell'immagine (ImageLocation) senza parole chiave
Se si specifica una posizione di immagine senza alcuna parola chiave, il controllo Chart utilizzerà un singolo file per il rendering di tutte le immagini. Il percorso del file risultante corrisponderà alla directory con il testo iniziale specificato e con l'estensione di file specificata nella proprietà ImageType. Ad esempio: "~/Temp/ChartPicture_.png".
Notare che, se i dati o l'aspetto del grafico si modificano frequentemente, il file di immagine può essere sostituito prima di essere spedito al client, causando la ricezione di un'immagine non corretta da parte del client. Per evitare questo problema, utilizzare una delle parole chiave.
Posizione dell'immagine (ImageLocation) con parole chiave
È possibile inserire tre diverse parole chiave nella proprietà ImageLocation.
Parola chiave |
Descrizione |
---|---|
#UID |
Genera un identificatore univoco per ciascuna immagine di grafico sottoposta a rendering. Ad esempio: "~/Temp/ChartPicture#UID". L'utilizzo di questa parola chiave garantisce che il server risponda a ogni richiesta di pagina con l'immagine corretta sottoposta a rendering. È necessario eliminare manualmente i file obsoleti. In caso contrario, il numero di file crescerà indefinitamente. |
#SEQ(maxFiles,minutes) |
Genera un numero sequenziale di file, fino al numero definito nel parametro maxFiles, quindi riavvia la sequenza sostituendo il primo file nella sequenza. Ad esempio: "Picture_#SEQ(300,5)" genera i seguenti nomi di file (supponendo che ImageType sia impostata su Png): Picture_000001.jpg, Picture_000002.jpg, ... Il parametro minutes specifica il timeout per ciascun file nella sequenza. Tuttavia, non garantisce la validità di un nome di file per il periodo specificato. Se un file viene riciclato prima della scadenza per relativo periodo di timeout, nel log eventi dell'applicazione viene inserito un messaggio di avviso. È necessario impostare il parametro maxFile su un numero ragionevolmente ampio per evitare sovrapposizioni inappropriate dei file di immagine. |
#NOGUIDPARAM |
Rimuove la stringa del GUID dall'URL del file di immagine. Ad esempio: "Picture_#SEQ(300,5)#NOGUIDPARAM". Per impostazione predefinita, il controllo Chart aggiunge una stringa GUID all'URL dell'immagine. |
Tipo e compressione di immagini
Per specificare il tipo di immagine quando le immagini dei grafici vengono salvate in file temporanei, utilizzare la proprietà ImageType del controllo Chart. Se questa proprietà viene impostata su Jpeg, è inoltre possibile specificare la compressione JPEG nella proprietà Compression del controllo Chart.
Vedere anche
Concetti
Rendering delle immagini dei grafici