Comment : récupérer les informations de chaîne de requête dans une application ClickOnce
Mise à jour : novembre 2007
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 transmettre une valeur pour la variable username lorsque l'application est lancée. Votre URL se présente comme suit :
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.
La première procédure explique comment configurer votre application ClickOnce à l'aide de MageUI.exe afin qu'elle accepte des paramètres de chaîne de requête.
Remarque : |
---|
Consultez la section « Sécurité » plus loin dans cette rubrique avant de décider d'activer cette fonction. |
La procédure suivante montre comment votre application ClickOnce peut utiliser du code pour lire ces valeurs au premier lancement de l'application.
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.
Remarque : |
---|
Il n'est pas possible de passer des arguments de ligne de commande à une application ClickOnce. Si vous souhaitez fournir des arguments à l'application, vous devez la déployer sur le Web et fournir des paramètres de chaîne de requête dans l'URL. |
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 File, sélectionnez Open et ouvrez le manifeste de déploiement de votre application ClickOnce, à savoir le fichier se terminant par l'extension .application.
Sélectionnez le volet Deployment Options dans la fenêtre de navigation de gauche et activez la case à cocher en regard de l'option Allow URL parameters to be passed to application.
Dans le menu File, cliquez sur Save.
Pour obtenir des informations de chaîne de requête d'une application ClickOnce
Insérez le code suivant dans votre projet :
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.
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 Vue d'ensemble des attaques de script.