Procedura: recuperare informazioni sulle stringhe di query in un'applicazione ClickOnce online
La stringa di query è la parte di un URL che inizia con un punto interrogativo (?) e che contiene informazioni arbitrarie nel formato nome=valore. Si supponga di disporre di un'applicazione ClickOnce denominata WindowsApp1 che si trova su server1 e di voler passare un valore per la variabile username all'avvio dell'applicazione. L'URL potrebbe essere simile al seguente:
http://server1/WindowsApp1.application?username=utenterossi
Nelle due procedure riportate di seguito viene illustrato come utilizzare un'applicazione ClickOnce per ottenere informazioni sulle stringhe di query.
Nota
È possibile passare informazioni in una stringa di query solo quando l'applicazione viene avviata tramite HTTP, anziché tramite una condivisione file o il file system locale.
Nella prima procedura viene spiegato come inserire un piccolo segmento di codice nell'applicazione ClickOnce per consentire il recupero di questi valori all'avvio dell'applicazione.
Nella procedura successiva viene descritto come configurare l'applicazione ClickOnce utilizzando MageUI.exe in modo che possa accettare parametri delle stringhe di query. Sarà necessario eseguire questa operazione ogni volta che si pubblica l'applicazione.
Nota
Prima di decidere se attivare questa funzionalità, vedere la sezione "Sicurezza" più avanti in questo argomento.
Per informazioni su come creare una distribuzione ClickOnce utilizzando Mage.exe o MageUI.exe, vedere Procedura dettagliata: distribuzione manuale di un'applicazione ClickOnce.
Nota
A partire da .NET Framework 3.5 SP1, è possibile passare argomenti della riga di comando a un'applicazione ClickOnce offline. Se si desidera fornire argomenti all'applicazione, è possibile passare parametri al file di collegamento con estensione APPREF-MS.
Per ottenere informazioni sulle stringhe di query da un'applicazione ClickOnce
Inserire il seguente codice nel progetto. Affinché questo codice funzioni, sarà necessario avere un riferimento a System.Web e aggiungere le istruzioni using o Imports per System.Web, System.Collections.Specialized e System.Deployment.Application.
Private Function GetQueryStringParameters() As NameValueCollection Dim NameValueTable As New NameValueCollection() If (ApplicationDeployment.IsNetworkDeployed) Then Dim QueryString As String = ApplicationDeployment.CurrentDeployment.ActivationUri.Query NameValueTable = HttpUtility.ParseQueryString(QueryString) End If GetQueryStringParameters = NameValueTable End Function
private NameValueCollection GetQueryStringParameters() { NameValueCollection nameValueTable = new NameValueCollection(); if (ApplicationDeployment.IsNetworkDeployed) { string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query; nameValueTable = HttpUtility.ParseQueryString(queryString); } return (nameValueTable); }
Chiamare la funzione definita in precedenza per recuperare il valore di Dictionary per i parametri delle stringhe di query, indicizzati per nome.
Per attivare il passaggio di stringhe di query in un'applicazione ClickOnce mediante MageUI.exe
Aprire la finestra del prompt dei comandi di .NET e digitare:
MageUI
Scegliere Apri dal menu File, quindi aprire il manifesto di distribuzione per l'applicazione ClickOnce, ossia il file con estensione application.
Selezionare il riquadro Opzioni di distribuzione nella finestra di navigazione a sinistra, quindi selezionare la casella di controllo Consenti passaggio di parametri URL all'applicazione.
Scegliere Salva dal menu File.
Nota
In alternativa, è possibile abilitare il passaggio delle stringhe di query in Visual Studio. Selezionare la casella di controllo Consenti passaggio di parametri URL all'applicazione, disponibile aprendo Proprietà progetto, selezionando la scheda Pubblica, facendo clic sul pulsante Opzioni, quindi selezionando Manifesti.
Programmazione efficiente
Quando si utilizzano parametri delle stringhe di query, è necessario prestare particolare attenzione alla modalità di installazione e attivazione dell'applicazione. Se l'applicazione è configurata in modo da essere installata nel computer dell'utente dal Web o da una condivisione di rete, è probabile che l'utente debba attivarla solo una volta tramite URL. Successivamente l'utente attiverà l'applicazione utilizzando il collegamento nel menudi avvio. Di conseguenza l'applicazione potrà ricevere argomenti delle stringhe di query solo una volta nell'intero ciclo di vita. Se si sceglie di archiviare questi argomenti sul computer dell'utente per un utilizzo futuro, sarà necessario archiviarli in modo sicuro e protetto.
Se è solo in modalità online, l'applicazione verrà sempre attivata tramite un URL. Anche in questa circostanza tuttavia l'applicazione deve essere scritta in modo da funzionare correttamente in caso di parametri delle stringhe di query mancanti o danneggiati.
Sicurezza
Consentire il passaggio di parametri URL all'applicazione ClickOnce solo se si prevede di filtrare l'input da caratteri dannosi prima dell'utilizzo. È possibile ad esempio che una stringa con virgolette, barre o punti e virgola esegua operazioni arbitrarie sui dati se utilizzata senza essere filtrata in una query SQL eseguita su un database. Per ulteriori informazioni sulla sicurezza delle stringhe di query, vedere Cenni preliminari sugli attacchi tramite script.