Практическое руководство. Извлечение сведений строки запроса в приложении ClickOnce
Обновлен: Ноябрь 2007
Строка запроса — это часть URL-адреса, начинающаяся со знака вопроса (?), в которой содержатся произвольные сведения в формате имя=значение. Предположим, что имеется приложение ClickOnce с именем WindowsApp1, которое размещается на имясервера, и требуется при запуске приложения передать значение для переменной имяпользователя. URL-адрес может выглядеть следующим образом.
http://имясервера/WindowsApp1.application?username=joeuser
В следующих двух процедурах показано, как использовать приложение ClickOnce для получения сведений строки запроса.
В первой процедуре показывается, как настроить приложение ClickOnce с помощью MageUI.exe, чтобы оно могло принимать параметры строки запроса.
Примечание. |
---|
Прежде чем принять решение о необходимости включения этой функции, ознакомьтесь с разделом "Безопасность" далее в этой статье. |
В следующей процедуре показывается, как приложение ClickOnce может использовать небольшой фрагмент кода для считывания этих значений при первом запуске приложения.
Сведения о создании развертывания ClickOnce с помощью Mage.exe или MageUI.exe см. в разделе Пошаговое руководство. Развертывание приложения ClickOnce вручную.
Примечание. |
---|
В приложение ClickOnce невозможно передать аргументы командной строки. Если требуется передать аргументы в приложение, необходимо развернуть его через Интернет и передать параметры строки запроса в URL-адресе. |
Чтобы включить передачу строки запроса в приложение ClickOnce с помощью MageUI.exe
Откройте окно командной строки .NET и введите:
MageUI
В меню Файл выберите команду Открыть и откройте для используемого приложения ClickOnce манифест развертывания, который представляет собой файл с расширением .application.
Выберите панель Параметры развертывания в левом окне навигации и установите флажок Разрешить передачу в приложение параметров URL-адреса.
В меню Файл выберите команду Сохранить.
Чтобы получить сведения строки запроса из приложения ClickOnce
Поместите куда-нибудь в свой проект следующий код:
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 параметров строки запроса, индексируемых по имени.
Отказоустойчивость
При использовании параметров строки запроса необходимо тщательно проанализировать, как устанавливается и активируется приложение. Если приложение настроено для установки на пользовательском компьютере из Интернета или из общего сетевого ресурса, скорее всего пользователь будет активировать приложение только один раз с помощью URL-адреса. После этого пользователь обычно активирует приложение, используя ярлык в меню Пуск. В результате этого гарантируется, что приложение получит аргументы строки запроса только один раз в течение своего срока службы. Если выбрано хранение этих аргументов на компьютере пользователя для будущего использования, пользователь отвечает за их безопасное и надежное хранение.
Если приложение находится только в интерактивном режиме, оно всегда активируется через URL-адрес. Однако даже в этом случае приложение должно быть написано так, чтобы оно правильно функционировало, если параметры строки запроса отсутствуют или повреждены.
Безопасность
Разрешите передачу параметров URL-адреса в приложение ClickOnce только в том случае, если планируете очищать входные данные от любых знаков, вставленных со злым умыслом, до применения приложения. Например, строка, вставленная с кавычками, косыми чертами или точками с запятыми, может выполнять произвольные операции с данными, если используется нефильтрованной в SQL-запросе к базе данных. Дополнительные сведения о безопасности строки запроса см. в разделе Общие сведения об использовании сценариев.