Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La maggior parte delle applicazioni utilizza o produce dati. ClickOnce offre un'ampia gamma di opzioni per la lettura e la scrittura di dati, sia in locale che in remoto.
Dati locali
Con ClickOnce è possibile caricare e archiviare i dati in locale usando uno dei metodi seguenti:
Directory dei dati ClickOnce
Spazio di memorizzazione isolato
Altri file locali
Directory dei dati ClickOnce
Ogni applicazione ClickOnce installata in un computer locale dispone di una directory di dati archiviata nella cartella Documenti e impostazioni dell'utente. Qualsiasi file incluso in un'applicazione ClickOnce e contrassegnato come file "dati" viene copiato in questa directory quando viene installata un'applicazione. I file di dati possono essere di qualsiasi tipo, i più frequentemente usati sono i file di testo, XML e di database, ad esempio i file .mdb di Microsoft Access.
La directory dei dati è destinata ai dati gestiti dall'applicazione, ovvero i dati archiviati e gestiti in modo esplicito dall'applicazione. Tutti i file statici e non di dipendenza non contrassegnati come "dati" nel manifesto dell'applicazione si troveranno invece nella directory dell'applicazione. Questa directory è la posizione in cui risiedono i file eseguibili dell'applicazione (.exe) e gli assembly.
Annotazioni
Quando un'applicazione ClickOnce viene disinstallata, viene rimossa anche la relativa directory di dati. Non usare mai la directory dati per archiviare i dati gestiti dall'utente finale, ad esempio i documenti.
Contrassegnare i file di dati in una distribuzione ClickOnce
Per inserire un file esistente all'interno della Data Directory, devi contrassegnare il file esistente come file di dati nel manifesto dell'applicazione ClickOnce. Per altre informazioni, vedere Procedura: Includere un file di dati in un'applicazione ClickOnce.
Leggere e scrivere nella cartella dei dati
Per leggere dalla directory dati è necessario che l'applicazione ClickOnce richieda l'autorizzazione lettura; Analogamente, la scrittura nella directory richiede l'autorizzazione di scrittura. L'applicazione avrà automaticamente questa autorizzazione se è configurata per l'esecuzione con attendibilità totale. Per altre informazioni sull'elevazione delle autorizzazioni per l'applicazione tramite l'elevazione delle autorizzazioni o la distribuzione di applicazioni attendibili, vedere Proteggere le applicazioni ClickOnce.
Annotazioni
Se l'organizzazione non usa la distribuzione di applicazioni attendibili e ha disattivato l'elevazione delle autorizzazioni, l'asserzione delle autorizzazioni avrà esito negativo.
Dopo che l'applicazione dispone di queste autorizzazioni, può accedere alla directory dei dati usando chiamate al metodo per le classi all'interno di System.IO. È possibile ottenere il percorso della Data Directory all'interno di un'applicazione ClickOnce di Windows Forms utilizzando la proprietà DataDirectory definita sulla proprietà CurrentDeployment di ApplicationDeployment. Questo è il modo più pratico e consigliato per accedere ai dati. Nell'esempio di codice seguente viene illustrato come eseguire questa operazione per un file di testo denominato CSV.txt incluso nella distribuzione come file di dati.
Annotazioni
La ApplicationDeployment classe e le API nello System.Deployment.Application spazio dei nomi non sono supportate in .NET Core e .NET 5 e versioni successive. In .NET 7 è supportato un nuovo metodo di accesso alle proprietà di distribuzione dell'applicazione. Per altre informazioni, vedere Accedere alle proprietà di distribuzione ClickOnce in .NET. .NET 7 non supporta l'equivalente dei metodi ApplicationDeployment.
if (ApplicationDeployment.IsNetworkDeployed)
{
try
{
using (StreamReader sr = new StreamReader(ApplicationDeployment.CurrentDeployment.DataDirectory + @"\CSV.txt"))
{
MessageBox.Show(sr.ReadToEnd());
}
}
catch (Exception ex)
{
MessageBox.Show("Could not read file. Error message: " + ex.Message);
}
}
Per altre informazioni sul contrassegno dei file nella distribuzione come file di dati, vedere Procedura: Includere un file di dati in un'applicazione ClickOnce.
È anche possibile ottenere il percorso della directory dati usando le variabili pertinenti nella Application classe , ad esempio LocalUserAppDataPath.
La modifica di altri tipi di file potrebbe richiedere autorizzazioni aggiuntive. Ad esempio, se si vuole usare un file di database di Access (.mdb), l'applicazione deve asserire l'attendibilità totale per usare le classi xref:System.Data> pertinenti<.
Directory dei dati e versioni dell'applicazione
Ogni versione di un'applicazione ha una propria directory di dati, isolata da altre versioni. ClickOnce crea questa directory indipendentemente dal fatto che nella distribuzione siano inclusi file di dati in modo che l'applicazione disponga di un percorso per creare nuovi file di dati in fase di esecuzione. Quando viene installata una nuova versione di un'applicazione, ClickOnce copia tutti i file di dati esistenti dalla directory dei dati della versione precedente nella directory dei dati della nuova versione, indipendentemente dal fatto che siano stati inclusi nella distribuzione originale o creati dall'applicazione.
ClickOnce sostituirà la versione precedente del file con la versione più recente del server se un file di dati ha un valore hash diverso nella versione precedente dell'applicazione, come nella nuova versione. Inoltre, se la versione precedente dell'applicazione ha creato un nuovo file con lo stesso nome di un file incluso nella distribuzione della nuova versione, ClickOnce sovrascriverà il file della versione precedente con il nuovo file. In entrambi i casi, i file precedenti verranno inclusi in una sottodirectory all'interno della directory dei dati denominata .pre
, in modo che l'applicazione possa comunque accedere ai dati precedenti a scopo di migrazione.
Se è necessaria una migrazione più granulare dei dati, è possibile usare l'API di distribuzione ClickOnce per eseguire la migrazione personalizzata dalla directory dei dati precedente alla nuova directory dati. Sarà necessario verificare la disponibilità di un download usando IsFirstRun, scaricare l'aggiornamento usando Update o UpdateAsync, ed eseguire qualsiasi migrazione dei dati personalizzata al termine dell'aggiornamento.
Spazio di memorizzazione isolato
L'archiviazione isolata offre un'API per la creazione e l'accesso ai file tramite una semplice API. Il percorso effettivo dei file archiviati è nascosto sia allo sviluppatore che all'utente.
L'archiviazione isolata funziona in tutte le versioni di .NET Framework. L'archiviazione isolata funziona anche in applicazioni parzialmente attendibili senza la necessità di concessioni di autorizzazione aggiuntive. È consigliabile usare l'archiviazione isolata se l'applicazione deve essere eseguita con attendibilità parziale, ma deve gestire dati specifici dell'applicazione.
Annotazioni
In ClickOnce per .NET Core e .NET 5 o versione successiva, l'attendibilità parziale, che richiede la sicurezza dall'accesso al codice, non è supportata. In .NET Framework l'uso della sicurezza dall'accesso di codice non è una procedura consigliata e non è consigliato.
Per altre informazioni, vedere Archiviazione isolata.
Altri file locali
Se l'applicazione deve usare o salvare dati dell'utente finale, ad esempio report, immagini, musica e così via, l'applicazione dovrà FileIOPermission leggere e scrivere dati nel file system locale.
Dati remoti
A un certo punto, l'applicazione dovrà probabilmente recuperare informazioni da un sito Web remoto, ad esempio i dati dei clienti o le informazioni sul mercato. Questa sezione illustra le tecniche più comuni per il recupero di dati remoti.
Accedere ai file con HTTP
È possibile accedere ai dati da un server Web utilizzando la classe WebClient o la classe HttpWebRequest nello spazio dei nomi System.Net. I dati possono essere file statici o applicazioni ASP.NET che restituiscono testo non elaborato o dati XML. Se i dati sono in formato XML, il modo più rapido per recuperare i dati consiste nell'usare la classe , il XmlDocument cui Load metodo accetta un URL come argomento. Per un esempio, vedere Leggere un documento XML nel DOM.
È necessario considerare la sicurezza quando l'applicazione accede ai dati remoti tramite HTTP. Per impostazione predefinita, l'accesso dell'applicazione ClickOnce alle risorse di rete può essere limitato, a seconda della modalità di distribuzione dell'applicazione. Queste restrizioni vengono applicate per impedire ai programmi dannosi di accedere ai dati remoti con privilegi o di usare il computer di un utente per attaccare altri computer sulla rete.
Nella tabella seguente sono elencate le strategie di distribuzione che è possibile usare e le relative autorizzazioni Web predefinite.
Tipo di distribuzione | Autorizzazioni di rete predefinite |
---|---|
Installazione Web | Può accedere solo al server Web da cui è stata installata l'applicazione |
Installazione di condivisione file | Impossibile accedere ad alcun server Web |
installazione di CD-ROM | Può accedere a qualsiasi server Web |
Se l'applicazione ClickOnce non può accedere a un server Web a causa di restrizioni di sicurezza, l'applicazione deve asserire WebPermission per tale sito Web. Per altre informazioni sull'aumento delle autorizzazioni di sicurezza per un'applicazione ClickOnce, vedere Proteggere le applicazioni ClickOnce.
Accedere ai dati tramite un servizio Web XML
Se si espongono i dati come servizio Web XML, è possibile accedere ai dati usando un proxy del servizio Web XML. Il proxy è una classe .NET Framework creata usando Visual Studio. Le operazioni del servizio Web XML, ad esempio il recupero di clienti, l'inserimento di ordini e così via, vengono esposte come metodi nel proxy. In questo modo i servizi Web sono molto più facili da usare rispetto ai file di testo non elaborati o XML.
Se il servizio Web XML opera su HTTP, il servizio verrà associato alle stesse restrizioni di sicurezza delle WebClient classi e HttpWebRequest .
Accedere direttamente a un database
È possibile usare le classi all'interno dello spazio dei System.Data nomi per stabilire connessioni dirette con un server di database, ad esempio SQL Server nella rete, ma è necessario tenere conto dei problemi di sicurezza. A differenza delle richieste HTTP, le richieste di connessione al database sono sempre vietate per impostazione predefinita con attendibilità parziale; tale autorizzazione sarà disponibile per impostazione predefinita solo se si installa l'applicazione ClickOnce da un CD-ROM. In questo modo l'applicazione è completamente attendibile. Per abilitare l'accesso a un database SQL Server specifico, l'applicazione deve richiederla SqlClientPermission . Per abilitare l'accesso a un database diverso da SQL Server, deve richiedere OleDbPermission.
Nella maggior parte dei casi non sarà necessario accedere direttamente al database, ma sarà possibile accedervi tramite un'applicazione server Web scritta in ASP.NET o un servizio Web XML. L'accesso al database in questo modo è spesso il metodo migliore se l'applicazione ClickOnce viene distribuita da un server Web. È possibile accedere al server con attendibilità parziale senza elevare le autorizzazioni dell'applicazione.