Récupérer les informations de chaîne de requête dans une application ClickOnce en ligne

La chaîne de requête est la partie d’une URL commençant par un point d’interrogation ( ?) qui contient des informations arbitraires sous la forme nom=valeur. Supposez que vous avez une application ClickOnce nommée WindowsApp1 que vous hébergez sur servername, et que vous souhaitez passer une valeur pour la variable username quand l’application démarre. Votre code peut ressembler à ce qui suit :

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

Les deux procédures suivantes montrent comment utiliser une application ClickOnce pour obtenir les informations de chaîne de requête.

Notes

Vous pouvez passer des informations dans une chaîne de requête quand votre application est lancée uniquement à l’aide du protocole HTTP, au lieu d’utiliser un partage de fichiers ou le système de fichiers local.

La première procédure montre comment votre application ClickOnce peut utiliser un petit bloc de code pour lire ces valeurs au démarrage de l’application.

La procédure suivante montre comment configurer votre application ClickOnce à l’aide de MageUI.exe pour qu’elle accepte des paramètres de chaîne de requête. Vous devez effectuer ces opérations chaque fois que vous publiez votre application.

Notes

Avant de décider d’activer cette fonctionnalité, consultez la section « Sécurité » plus loin dans cette rubrique.

Pour plus d’informations sur la création d’un déploiement ClickOnce à l’aide de Mage.exe ou MageUI.exe, consultez Procédure pas à pas : déployer manuellement une application ClickOnce.

Notes

À compter du .NET Framework 3.5 SP1, vous pouvez passer des arguments de ligne de commande à une application ClickOnce hors connexion. Si vous souhaitez fournir des arguments à l’application, vous pouvez passer des paramètres au fichier de raccourci avec l’extension .APPREF-MS.

Pour obtenir des informations de chaîne de requête à partir d’une application ClickOnce

  1. Placez le code suivant dans votre projet. Pour que ce code fonctionne, vous devez avoir une référence à System.Web et ajouter des directives using ou Imports pour System.Web, System.Collections.Specialized et System.Deployment.Application.

    Notes

    La classe ApplicationDeployment et les API de l’espace de noms System.Deployment.Application ne sont pas prises en charge dans .NET Core, .NET 5 et les versions ultérieures. Dans .NET 7, une nouvelle méthode d’accès aux propriétés de déploiement d’application est prise en charge. Pour plus d’informations, consultez Accéder aux propriétés de déploiement ClickOnce dans .NET. .NET 7 ne prend pas en charge l’équivalent des méthodes ApplicationDeployment.

    private NameValueCollection GetQueryStringParameters()
    {
        NameValueCollection nameValueTable = new NameValueCollection();
    
        if (ApplicationDeployment.IsNetworkDeployed)
        {
            string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
            nameValueTable = HttpUtility.ParseQueryString(queryString);
        }
    
        return (nameValueTable);
    }
    
  2. Appelez la fonction précédemment définie pour récupérer un Dictionary des paramètres de chaîne de requête, indexés par nom.

Pour activer le transfert de chaînes de requête dans une application ClickOnce avec MageUI.exe

  1. Ouvrez l’invite de commandes .NET et tapez :

    MageUI
    
  2. Dans le menu Fichier, sélectionnez Ouvriret ouvrez le manifeste de déploiement pour votre application ClickOnce, c’est-à-dire le fichier se terminant par .application l’extension.

  3. Sélectionnez le panneau Options de déploiement dans la fenêtre de navigation de gauche, puis cochez la case Autoriser le transfert des paramètres d’URL vers l’application .

  4. Dans le menu Fichier , sélectionnez Enregistrer.

Notes

Vous pouvez également activer le transfert des chaînes de requête dans Visual Studio. Cochez la case Autoriser le transfert des paramètres d’URL vers l’application , accessible en ouvrant les Propriétés du projet, en sélectionnant l’onglet Publier , en cliquant sur le bouton Options , puis en sélectionnant Manifestes.

Notes

Dans ClickOnce pour .NET Core 3.1 et .NET 5 ou version ultérieure, vous définissez les propriétés de déploiement à l’aide de l’outil Publication au lieu de l’Assistant Publication et de la page Publication du Concepteur de projet. Pour plus d’informations, consultez Déployer une application Windows .NET avec ClickOnce et ClickOnce pour .NET.

Programmation fiable

Quand vous utilisez des paramètres de chaîne de requête, vous devez faire attention à la façon dont votre application est installée et activée. Si votre application est configurée pour s’installer sur l’ordinateur de l’utilisateur à partir du web ou d’un partage réseau, il est probable que l’utilisateur activera l’application une seule fois par le biais de l’URL. Après cela, il l’activera généralement à l’aide du raccourci dans le menu Démarrer . Ainsi, votre application est assurée de recevoir des arguments de chaîne de requête une seule fois pendant sa durée de vie. Si vous choisissez de stocker ces arguments sur l’ordinateur de l’utilisateur pour une utilisation ultérieure, vous devez les stocker de manière sûre et sécurisée.

Si votre application est uniquement en ligne, elle sera toujours activée par le biais d’une URL. Même dans ce cas, toutefois, votre application doit être écrite pour fonctionner correctement si les paramètres de chaîne de requête sont manquants ou endommagés.

sécurité du .NET Framework

Autorisez le transfert des paramètres d’URL à votre application ClickOnce uniquement si vous envisagez de nettoyer l’entrée de caractères malveillants avant de l’utiliser. Une chaîne incorporée avec des guillemets, des barres obliques ou des points-virgules, par exemple, peut effectuer des opérations de données arbitraires si elle est utilisée sans filtre dans une requête SQL sur une base de données. Pour plus d’informations sur la sécurité des chaînes de requête, consultez Script Exploits Overview.