Comment : 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 name=value. Supposons que vous possédez une application ClickOnce appelée WindowsApp1 hébergée sur servername et que vous souhaitez passer une valeur pour la variable username lorsque l'application est lancée. Votre URL peut se présenter de la manière suivante :
https://servername/windowsapp1.application?username=joeuser
Les deux procédures suivantes montrent comment utiliser une application ClickOnce pour obtenir des informations de chaîne de requête.
Notes
Vous pouvez passer uniquement les informations dans une chaîne de requête lorsque votre application est lancée à l'aide de 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 une petite partie de code pour lire ces valeurs au démarrage de l'application.
La procédure suivante explique comment configurer votre application ClickOnce à l'aide de MageUI.exe afin qu'elle accepte des paramètres de chaîne de requête. Vous devez effectuer cette opération chaque fois que vous publiez votre application.
Notes
Consultez la section « Sécurité » plus loin dans cette rubrique avant de décider d'activer cette fonction.
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éploiement manuel d'une application ClickOnce.
Notes
À compter de .NET Framework 3.5 SP1, il est possible de passer des arguments de ligne de commande à une application hors connexion ClickOnce.Si vous souhaitez fournir des arguments à l'application, vous pouvez passer les paramètres au fichier de raccourci avec l'extension .APPREF-MS.
Pour obtenir des informations de chaîne de requête d'une application ClickOnce
Insérez le code suivant dans votre projet. Pour que ce code fonctionne, vous devez avoir une référence à System.Web et ajouter l'instruction using ou Imports pour System.Web, System.Collections.Specialized et 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); }
Appelez la fonction précédemment définie pour récupérer un Dictionary des paramètres de chaîne de requête, indexé par nom.
Pour activer la transmission d'une chaîne de requête dans une application ClickOnce avec MageUI.exe
Ouvrez l'invite de commandes .NET et tapez :
MageUI
Dans le menu Fichier, sélectionnez Ouvrir et ouvrez le manifeste de déploiement de votre application ClickOnce, à savoir le fichier se terminant par l'extension .application.
Sélectionnez le panneau Options de déploiement dans la fenêtre de navigation de gauche et activez la case à cocher Autoriser le transfert des paramètres d'URL vers l'application.
Dans le menu Fichier, cliquez sur Enregistrer.
Notes
Vous pouvez également activer le transfert des chaînes de requête dans Visual Studio.Activez la case à cocher Autoriser le transfert des paramètres d'URL vers l'application que vous trouverez en ouvrant Propriétés du projet, en sélectionnant l'onglet Publier, en cliquant sur le bouton Options et en sélectionnant ensuite Manifestes.
Programmation fiable
Lorsque vous utilisez des paramètres de chaîne de requête, vous devez faire attention à la manière dont votre application est installée et activée. Si votre application est configurée pour une installation 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 via l'URL. Ensuite, l'utilisateur activera généralement votre application à l'aide du raccourci dans le menu Démarrer. Par conséquent, vous avez la certitude que votre application recevra des arguments de chaîne de requête une seule fois pendant sa durée de vie. Si vous décidez 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 en ligne uniquement, elle sera toujours activée via une URL. Toutefois, même dans ce cas, votre application doit être écrite pour fonctionner correctement si les paramètres de chaîne de requête sont endommagés ou manquants.
Sécurité
Autorisez le transfert des paramètres d'URL à votre application ClickOnce uniquement si vous avez l'intention de supprimer tous les caractères nuisibles qui y figurent avant de l'utiliser. Une chaîne comportant des guillemets, des barres obliques ou des points-virgules, par exemple, peut exécuter des opérations de données arbitraires si elle est utilisée sans filtre dans une requête SQL dans une base de données. Pour plus d'informations sur la sécurité des chaînes de requêtes, consultez Script Exploits Overview.