Практическое руководство. Извлечение сведений строки запроса в интернет-приложении 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
Поместите следующий код в проект. Для работы этого кода необходимо добавить ссылку на 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); }
Вызовите функцию, определенную ранее, чтобы извлечь свойство Dictionary параметров строки запроса, индексируемых по имени.
Чтобы включить передачу строки запроса в приложение ClickOnce с помощью MageUI.exe
Откройте окно командной строки .NET и введите:
MageUI
В меню Файл выберите команду Открыть и откройте для используемого приложения ClickOnce манифест развертывания, который представляет собой файл с расширением .application.
Выберите панель Параметры развертывания в левом окне переходов и установите флажок Разрешить передачу параметров URL в приложение.
В меню Файл выберите команду Сохранить.
Примечание
Передачу строк запроса можно также разрешить в Visual Studio.Установите флажок Разрешить передачу параметров URL в приложение. Для этого откройте окно Свойства проекта, перейдите на вкладку Публикация, нажмите кнопку Параметры и выберите элемент Манифесты.
Отказоустойчивость
При использовании параметров строки запроса необходимо тщательно проанализировать, как устанавливается и активируется приложение. Если приложение настроено для установки на пользовательском компьютере из Интернета или из общего сетевого ресурса, скорее всего пользователь будет активировать приложение только один раз с помощью URL-адреса. После этого пользователь обычно активирует приложение, используя ярлык в меню Пуск. В результате этого гарантируется, что приложение получит аргументы строки запроса только один раз в течение своего срока службы. Если выбрано хранение этих аргументов на компьютере пользователя для будущего использования, пользователь отвечает за их безопасное и надежное хранение.
Если приложение находится только в интерактивном режиме, оно всегда активируется через URL-адрес. Однако даже в этом случае приложение должно быть написано так, чтобы оно правильно функционировало, если параметры строки запроса отсутствуют или повреждены.
Безопасность
Разрешите передачу параметров URL-адреса в приложение ClickOnce только в том случае, если планируете очищать входные данные от любых знаков, вставленных со злым умыслом, до применения приложения. Например, строка, вставленная с кавычками, косыми чертами или точками с запятыми, может выполнять произвольные операции с данными, если используется нефильтрованной в SQL-запросе к базе данных. Дополнительные сведения о безопасности строки запроса см. в разделе Общие сведения об использовании скриптов.