Recuperare informazioni sulla stringa di query in un'applicazione ClickOnce online

La stringa di query è la parte di un URL che inizia con un punto interrogativo (?) che contiene informazioni arbitrarie nel formato name=value. Si supponga di avere un'applicazione ClickOnce denominata WindowsApp1 che si ospita in servernamee si vuole passare un valore per la variabile username all'avvio dell'applicazione. L'URL potrebbe essere simile al seguente:

http://servername/WindowsApp1.application?username=joeuser

Le due procedure seguenti illustrano come usare un'applicazione ClickOnce per ottenere informazioni sulla stringa di query.

Note

È possibile passare informazioni in una stringa di query solo quando l'applicazione viene avviata tramite HTTP, anziché usare una condivisione file o il file system locale.

La prima procedura illustra come l'applicazione ClickOnce può usare una piccola parte di codice per leggere questi valori all'avvio dell'applicazione.

La procedura seguente illustra come configurare l'applicazione ClickOnce usando MageUI.exe in modo che possa accettare parametri di stringa di query. Sarà necessario eseguire questa operazione ogni volta che si pubblica l'applicazione.

Note

Vedere la sezione "Sicurezza" più avanti in questo argomento prima di prendere una decisione per abilitare questa funzionalità.

Per informazioni su come creare una distribuzione ClickOnce usando Mage.exe o MageUI.exe, vedere Procedura dettagliata: Distribuire manualmente un'applicazione ClickOnce.

Note

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 specificare parametri nel file di collegamento con estensione .APPREF-MS.

Per ottenere informazioni sulla stringa di query da un'applicazione ClickOnce

  1. Inserire il codice seguente nel progetto. Affinché questo codice funzioni, è necessario avere un riferimento a System.Web e aggiungere using direttive o Imports per System.Web, System.Collections.Specialized e System.Deployment.Application.

    Note

    La <xref:System.Deployment.Application.ApplicationDeployment> classe e le API nello <xref: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.

    private NameValueCollection GetQueryStringParameters()
    {
        NameValueCollection nameValueTable = new NameValueCollection();
    
        if (ApplicationDeployment.IsNetworkDeployed)
        {
            string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
            nameValueTable = HttpUtility.ParseQueryString(queryString);
        }
    
        return (nameValueTable);
    }
    
  2. Chiamare la funzione definita in precedenza per recuperare un Dictionary dei parametri della stringa di query indicizzati per nome.

Per abilitare il passaggio di una stringa di query in un'applicazione ClickOnce con MageUI.exe

  1. Aprire il prompt dei comandi .NET e digitare:

    MageUI
    
  2. Dal menu File selezionare Apri e aprire il manifesto della distribuzione per l'applicazione ClickOnce, ovvero il file che termina con l'estensione .application .

  3. Selezionare il pannello Opzioni di distribuzione nella finestra di spostamento a sinistra e selezionare la casella di controllo Consenti passaggio dei parametri URL all'applicazione .

  4. Nel menu File selezionare Salva.

Note

In alternativa, è possibile abilitare il passaggio della stringa di query in Visual Studio. Selezionare la casella di controllo Consenti il passaggio dei parametri URL all'applicazione, che è possibile trovare aprendo la Project Proprietà, selezionando la scheda Pubblica, facendo clic sul pulsante Opzioni e quindi selezionando Manifesti.

Note

In ClickOnce per .NET Core 3.1 e .NET 5 o versioni successive, si impostano le proprietà di distribuzione usando lo strumento Pubblica anziché la procedura guidata di pubblicazione e la pagina Pubblica del Progettista progetti. Per altre informazioni, vedere Distribuire un'applicazione Windows .NET con ClickOnce e ClickOnce per .NET.

Programmazione affidabile

Quando si usano parametri di stringa di query, è necessario prestare attenzione alla modalità di installazione e attivazione dell'applicazione. Se l'applicazione è configurata per l'installazione nel computer dell'utente dal Web o da una condivisione di rete, è probabile che l'utente attiverà l'applicazione una sola volta tramite l'URL. Successivamente, l'utente in genere attiverà l'applicazione usando il collegamento nel menu Start . Di conseguenza, è garantito che l'applicazione riceva gli argomenti della stringa di query una sola volta durante il suo ciclo di vita. Se si decide di archiviare questi parametri sul computer dell'utente per utilizzi futuri, è propria responsabilità conservarli in modo sicuro.

Se l'applicazione è solo online, verrà sempre attivata tramite un URL. Anche in questo caso, tuttavia, l'applicazione deve essere scritta correttamente per funzionare correttamente se i parametri della stringa di query sono mancanti o danneggiati.

.NET Framework (sicurezza)

Consentire il passaggio di parametri URL all'applicazione ClickOnce solo se si prevede di pulire l'input di eventuali caratteri dannosi prima di usarli. Una stringa contenente virgolette, slash o punti e virgola, ad esempio, potrebbe eseguire operazioni arbitrarie sui dati se utilizzata senza filtro in una query SQL in un database. Per altre informazioni sulla sicurezza delle stringhe di query, vedere Panoramica degli exploit di script.