Поделиться через


Практическое руководство. Извлечение сведений строки запроса в интернет-приложении ClickOnce

Строка запроса — это часть URL-адреса, начинающаяся с вопросительного знака (?), в которой содержатся произвольные сведения в формате имя=значение.Предположим, что имеется приложение ClickOnce с именем WindowsApp1, которое размещается на имясервера, и требуется при запуске приложения передать значение для переменной имяпользователя.URL-адрес может выглядеть следующим образом:

http://имясервера/WindowsApp1.application?username=joeuser

В следующих двух процедурах показано, как использовать приложение ClickOnce для получения сведений строки запроса.

ПримечаниеПримечание

Передача информации в строке запроса возможна только при запуске приложения с помощью HTTP, а не при использовании совместного хранилища или локальной файловой системы.

В первой процедуре показывается, как приложение ClickOnce может использовать небольшой фрагмент кода для считывания этих значений при запуске приложения.

В следующей процедуре показывается, как настроить приложение ClickOnce с помощью MageUI.exe, чтобы оно могло принимать параметры строки запроса.Это действие необходимо выполнить при публикации приложения.

ПримечаниеПримечание

Прежде чем принять решение о необходимости включения этой функции, ознакомьтесь с разделом "Безопасность" далее в этой статье.

Сведения о создании развертывания ClickOnce с помощью Mage.exe или MageUI.exe см. в разделе Разбор примера: развертывание вручную приложения ClickOnce.

ПримечаниеПримечание

Начиная с .NET Framework 3.5 с пакетом обновления 1 (SP1) можно передавать аргументы командной строки автономному приложению ClickOnce.Если требуется передать аргументы такому приложению, можно передать параметры в файл-ярлык с расширением .APPREF-MS.

Чтобы получить сведения строки запроса из приложения ClickOnce

  1. Поместите следующий код в проект.Для работы этого кода необходимо добавить ссылку на System.Web и операторы using или Imports для System.Web, System.Collections.Specialized и 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);
    }
    
  2. Вызовите функцию, определенную ранее, чтобы извлечь свойство Dictionary параметров строки запроса, индексируемых по имени.

Чтобы включить передачу строки запроса в приложение ClickOnce с помощью MageUI.exe

  1. Откройте окно командной строки .NET и введите:

    MageUI
    
  2. В меню Файл выберите команду Открыть и откройте для используемого приложения ClickOnce манифест развертывания, который представляет собой файл с расширением .application.

  3. Выберите панель Параметры развертывания в левом окне переходов и установите флажок Разрешить передачу параметров URL в приложение.

  4. В меню Файл выберите команду Сохранить.

ПримечаниеПримечание

Передачу строк запроса можно также разрешить в Visual Studio.Установите флажок Разрешить передачу параметров URL в приложение. Для этого откройте окно Свойства проекта, перейдите на вкладку Публикация, нажмите кнопку Параметры и выберите элемент Манифесты.

Отказоустойчивость

При использовании параметров строки запроса необходимо тщательно проанализировать, как устанавливается и активируется приложение.Если приложение настроено для установки на пользовательском компьютере из Интернета или из общего сетевого ресурса, скорее всего пользователь будет активировать приложение только один раз с помощью URL-адреса.После этого пользователь обычно активирует приложение, используя ярлык в меню Пуск.В результате этого гарантируется, что приложение получит аргументы строки запроса только один раз в течение своего срока службы.Если выбрано хранение этих аргументов на компьютере пользователя для будущего использования, пользователь отвечает за их безопасное и надежное хранение.

Если приложение находится только в интерактивном режиме, оно всегда активируется через URL-адрес.Однако даже в этом случае приложение должно быть написано так, чтобы оно правильно функционировало, если параметры строки запроса отсутствуют или повреждены.

Безопасность

Разрешите передачу параметров URL-адреса в приложение ClickOnce только в том случае, если планируете очищать входные данные от любых знаков, вставленных со злым умыслом, до применения приложения.Например, строка, вставленная с кавычками, косыми чертами или точками с запятыми, может выполнять произвольные операции с данными, если используется нефильтрованной в SQL-запросе к базе данных.Дополнительные сведения о безопасности строки запроса см. в разделе Script Exploits Overview.

См. также

Основные понятия

Защита приложений ClickOnce