Comment : récupérer les informations de chaîne de requête dans une application ClickOnce en ligneHow to: Retrieve Query String Information in an Online ClickOnce Application

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.The query string is the portion of a URL beginning with a question mark (?) that contains arbitrary information in the form name=value. Supposez que vous avez une application ClickOnceClickOnce 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.Suppose you have a ClickOnceClickOnce application named WindowsApp1 that you host on servername, and you want to pass in a value for the variable username when the application launches. Votre code peut ressembler à ce qui suit :Your URL might look like the following:

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

Les deux procédures suivantes montrent comment utiliser une application ClickOnceClickOnce pour obtenir les informations de chaîne de requête.The following two procedures show how to use a ClickOnceClickOnce application to obtain query string information.

Note

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.You can only pass information in a query string when your application is being launched using HTTP, instead of using a file share or the local file system.

La première procédure montre comment votre application ClickOnceClickOnce peut utiliser un petit bloc de code pour lire ces valeurs au démarrage de l’application.The first procedure shows how your ClickOnceClickOnce application can use a small piece of code to read these values when the application launches.

La procédure suivante montre comment configurer votre application ClickOnceClickOnce à l’aide de MageUI.exe pour qu’elle accepte des paramètres de chaîne de requête.The next procedure shows how to configure your ClickOnceClickOnce application using MageUI.exe so that it can accept query string parameters. Vous devez effectuer ces opérations chaque fois que vous publiez votre application.You will need to do this whenever you publish your application.

Note

Avant de décider d’activer cette fonctionnalité, consultez la section « Sécurité » plus loin dans cette rubrique.See the "Security" section later in this topic before you make a decision to enable this feature.

Pour plus d’informations sur la création d’un ClickOnceClickOnce déploiement à l’aide de Mage.exe ou MageUI.exe, consultez procédure pas à pas : déploiement manuel d’une Application ClickOnce.For information about how to create a ClickOnceClickOnce deployment using Mage.exe or MageUI.exe, see Walkthrough: Manually Deploying a ClickOnce Application.

Note

À compter du .NET Framework 3.5 SP1, vous pouvez passer des arguments de ligne de commande à une application ClickOnceClickOnce hors connexion.Starting in .NET Framework 3.5 SP1, it is possible to pass command-line arguments to an offline ClickOnceClickOnce application. Si vous souhaitez fournir des arguments à l’application, vous pouvez passer des paramètres au fichier de raccourci avec l’extension .APPREF-MS.If you want to supply arguments to the application, you can pass in parameters to the shortcut file with the .APPREF-MS extension.

Pour obtenir des informations de chaîne de requête à partir d’une application ClickOnceTo obtain query string information from a ClickOnce application

  1. Placez le code suivant dans votre projet.Place the following code in your project. Pour que ce code fonctionne, vous devez avoir une référence à System.Web et ajouter des instructions using ou Imports pour System.Web, System.Collections.Specialized et System.Deployment.Application.In order for this code to function, you will have to have a reference to System.Web and add using or Imports statements for System.Web, System.Collections.Specialized, and System.Deployment.Application.

    private NameValueCollection GetQueryStringParameters()
    {
        NameValueCollection nameValueTable = new NameValueCollection();
    
        if (ApplicationDeployment.IsNetworkDeployed)
        {
            string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
            nameValueTable = HttpUtility.ParseQueryString(queryString);
        }
    
        return (nameValueTable);
    }
    
    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
    
  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.Call the function defined previously to retrieve a Dictionary of the query string parameters, indexed by name.

Pour activer le transfert de chaînes de requête dans une application ClickOnce avec MageUI.exeTo enable query string passing in a ClickOnce application with MageUI.exe

  1. Ouvrez l’invite de commandes .NET et tapez :Open the .NET Command Prompt and type:

    MageUI  
    
  2. Dans le menu Fichier , sélectionnez Ouvriret ouvrez le manifeste de déploiement pour votre application ClickOnceClickOnce , c’est-à-dire le fichier se terminant par l’extension .application .From the File menu, select Open, and open the deployment manifest for your ClickOnceClickOnce application, which is the file ending in the .application 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 .Select the Deployment Options panel in the left-hand navigation window, and select the Allow URL parameters to be passed to application check box.

  4. Dans le menu Fichier , sélectionnez Enregistrer.From the File menu, select Save.

Note

Vous pouvez également activer le transfert des chaînes de requête dans Visual StudioVisual Studio.Alternately, you can enable query string passing in Visual StudioVisual 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.Select the Allow URL parameters to be passed to application check box, which can be found by opening the Project Properties, selecting the Publish tab, clicking the Options button, and then selecting Manifests.

Programmation fiableRobust Programming

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.When you use query string parameters, you must give careful consideration to how your application is installed and activated. 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.If your application is configured to install on the user's computer from the Web or from a network share, it is likely that the user will activate the application only once through the URL. Après cela, il l’activera généralement à l’aide du raccourci dans le menu Démarrer .After that, the user will usually activate your application using the shortcut in the Start menu. 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.As a result, your application is guaranteed to receive query string arguments only once during its lifetime. 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.If you choose to store these arguments on the user's machine for future use, you are responsible for storing them in a safe and secure manner.

Si votre application est uniquement en ligne, elle sera toujours activée par le biais d’une URL.If your application is online only, it will always be activated through a 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.Even in this case, however, your application must be written to function properly if the query string parameters are missing or corrupted.

Sécurité .NET Framework.NET Framework Security

Autorisez le transfert des paramètres d’URL à votre application ClickOnceClickOnce uniquement si vous envisagez de nettoyer l’entrée de caractères malveillants avant de l’utiliser.Allow passing URL parameters to your ClickOnceClickOnce application only if you plan to cleanse the input of any malicious characters before using it. 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.A string embedded with quotes, slashes, or semicolons, for example, might perform arbitrary data operations if used unfiltered in a SQL query against a database. Pour plus d’informations sur la sécurité des chaînes de requête, consultez Script Exploits Overview.For more information on query string security, see Script Exploits Overview.

Voir aussiSee Also

Sécurisation des applications ClickOnceSecuring ClickOnce Applications