Condividi tramite


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 contiene informazioni arbitrarie nel formato nome = valore. 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'aspetto dell'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.

Nota

È possibile passare informazioni in una stringa di query solo quando l'applicazione viene avviata usando HTTP anziché 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. È 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 tramite Mage.exe o MageUI.exe, vedere Procedura dettagliata: Distribuire manualmente 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 l'estensione .APPREF-MS.

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

  1. Includere 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.

    Nota

    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.

    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 la stringa di query passando 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 riquadro Opzioni di distribuzione nella finestra di navigazione a sinistra e selezionare la casella di controllo Consenti passaggio di parametri URL all'applicazione .

  4. Nel menu File selezionare Salva.

Nota

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

Nota

In ClickOnce per .NET Core 3.1 e .NET 5 o versione successiva è possibile impostare le proprietà di distribuzione usando lo strumento Pubblica anziché la pubblicazione guidata e la pagina Pubblica di Progettazione progetti. Per altre informazioni, vedere Distribuire un'applicazione Windows .NET con ClickOnce e ClickOnce per .NET.

Programmazione efficiente

Quando si usano parametri di stringa di query, è necessario valutare attentamente come l'applicazione è installata e attivata. Se l'applicazione è configurata per essere installata nel computer dell'utente dal Web o da una condivisione di rete, è probabile che l'utente attiverà l'applicazione solo una volta tramite l'URL. Successivamente, l'utente attiverà l'applicazione usando il collegamento nel menu Start . Di conseguenza, è garantito che l'applicazione riceverà gli argomenti della stringa di query una sola volta durante tutta la sua vita. Se si sceglie di archiviare questi argomenti sul computer dell'utente per uso futuro, è necessario archiviarli in modo sicuro e protetto.

Se l'applicazione è solo online, verrà sempre attivata tramite un URL. Anche in questo caso, tuttavia, l'applicazione deve essere scritta in modo da funzionare correttamente se i parametri della stringa di query mancano o sono 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 incorporata con virgolette, barre o punto e virgola, ad esempio, potrebbe eseguire le operazioni di dati arbitrarie se viene impiegata senza essere filtrata in una query SQL su un database. Per altre informazioni sulla sicurezza delle stringhe di query, vedere Cenni preliminari sugli attacchi tramite script.