Практическое руководство. Использование параметров веб-развертывания в пакете веб-развертывания

В этом разделе описывается использование параметров Web Deploy в процессе создания и установки пакетов развертывания веб-проектов. Параметры Web Deploy полезны, если при создании пакета неизвестны некоторые значения, которые потребуются при установке пакета. Например, лицо, создающее пакет, может не знать пароль, необходимый для установки пакета. Параметры Web Deploy также полезны при необходимости неоднократной установки одного и того же пакета с указанием разных параметров при каждой установке. Например, можно запланировать установку одного и того же пакета в тестовой среде и в рабочей среде, с указанием разных конечных точек WCF для каждой среды.

Этот раздел предполагает, что пользователь уже умеет создавать и устанавливать пакеты развертывания. Дополнительные сведения см. в разделе Как создать пакет веб-развертывания в Visual Studio.

Использование параметров скрипта базы данных для развертывания

Параметры можно включить в скрипт SQL Server. В следующем примере показано, как включить в скрипт SQL Server переменную с именем logText и присвоить ей значение по умолчанию «DefaultText».

:setvar logText DefaultText

INSERT [dbo].[Log] ([LogText]) VALUES (N'$(logText)')
GO

В Visual Studio можно указать скрипт SQL Server для выполнения в ходе развертывания, выбрав Обновить базу данных и нажав Настройка обновлений базы данных. Если скрипт содержит параметры, Visual Studio автоматически создает параметры Web Deploy для пакета развертывания. Значения для этих параметров можно указать в ходе установки пакета как при использовании диспетчера IIS, так и процесса командной строки.

Использование параметров скрипта базы данных для развертывания

  1. Создайте пользовательский скрипт SQL, содержащий один или несколько параметров.

  2. Добавьте скрипт в диалоговое окно Настройка обновлений базы данных при настройке профиля публикации.

  3. Создайте пакет развертывания.

  4. Если при использовании файла deploy.cmd для установки пакета требуется указать значение, отличное от значения по умолчанию, измените значение по умолчанию в файле SetParameters.xml перед установкой пакета.

    Например при добавлении скрипта, показанного в предыдущем примере, файл SetParameters.xml может выглядеть следующим образом:

    <parameters>
      <setParameter name="IIS Web Application Name" 
        value="Default Web Site/WebApplication1_deploy" />
      <setParameter name="ApplicationServices-Deployment Connection String"
        value="" />
      <setParameter name="Sql script variable $(logText) in ApplicationServices-Deployment scripts"
        value="DefaultText" />
      <setParameter name="ApplicationServices-Deployment Connection String"
        value="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" />
    </parameters>
    

    Для задания значения параметра logText, который будет использоваться при выполнении скрипта, можно изменить атрибут value выделенного XML-элемента.

  5. При установке пакета с помощью диспетчера IIS будет предложено ввести значение параметра в диалоговом окне Ввод данных о пакете приложения, как показано на следующем рисунке:

    Диалоговое окно ввода сведений о пакете диспетчера IIS

Использование параметров развертывания для параметров файла Web.config

Для изменения параметров в развернутом файле Web.config можно использовать преобразования файла Web.config, если заранее известно, какими должны быть значения. (Дополнительные сведения см. в разделе Преобразования файла Web.config на веб-сайте ASP.NET.) Однако если значения некоторых параметров требуется задать при установке пакета, а не при его создании, параметры развертывания являются лучшим вариантом. Например, при установке пакета может потребоваться настроить следующие параметры:

  • конечные точки службы WCF;

  • конечные точки веб-службы;

  • сведения, касающиеся безопасности, например ключи шифрования.

Чтобы использовать параметры развертывания, необходимо объявить их в XML-файле, расположенном в каталоге проекта. При объявлении параметров можно предоставить значения по умолчанию. Фактически развертываемые значения можно задать при установке пакета.

Использование параметров развертывания для параметров файла Web.config

  1. Создайте пустой текстовый файл, присвойте ему имя parameters.xml и сохраните файл в папке проекта (той же папке, где расположен CSPROJ- или VBPROJ-файл проекта).

  2. Добавьте в файл корневой элемент с именем parameters, как показано в следующем примере:

    <parameters>
    </parameters>
    
  3. Для каждого добавляемого параметра выполните следующие действия.

    1. В корневом элементе parameters создайте элемент parameter с атрибутами name, description, defaultValue и tags, как показано в следующем примере:

      <parameters>
        <parameter name="WebService1 Endpoint Address" 
          description="Please provide the endpoint address for the Web service that you want to call."
          defaultValue=https://contoso.com/WebService1.asmx
          tags="">
        </parameter>
      </parameters>
      

      При установке пакета с помощью диспетчера IIS значения атрибутов name и description отображаются в пользовательском интерфейсе вместе с текстовым полем, в котором можно ввести значение параметра. Значение атрибута defaultValue предварительно загружается в текстовое поле.

      Если опустить атрибут defaultValue или задать для него пустую строку или строку, содержащую только пробелы, параметр считается обязательным для заполнения. При установке пакета с помощью файла deploy.cmd потребуется ввести значение в файле SetParameters.xml.

      Атрибут tags позволяет указать тип данных, представляемых параметром, чтобы пользовательский интерфейс по возможности содействовал вводу данных. Например, при указании значения Boolean пользовательский интерфейс выводит раскрывающийся список с вариантами True и False. При указании значения DBConnectionString пользовательский интерфейс выводит рядом с текстовым полем кнопку, которую можно нажать для отображения диалогового окна строки подключения. Для получения списка доступных тегов см. статью Перечисление DeploymentWellKnownTag на веб-сайте Microsoft TechNet.

    2. В элементе parameter создайте элемент parameterEntry с атрибутами kind, scope и match, как показано в следующем примере:

      <parameters>
        <parameter name="WebService1 Endpoint Address"
          description="Please provide the endpoint address for the Web service that you want to call."
          defaultValue="https://contoso.com/WebService1.asmx"
          tags="">
        <parameterEntry 
          kind="XmlFile"
          scope="obj\\Debug\\Package\\PackageTmp\\Web\.config$"
          match="//setting[@name='WebService1EndPoint']/value/text()" />
        </parameter>
      </parameters>
      

      Атрибут kind определяет тип ресурса, к которому применяется значение параметра. Файлы Web.config являются XML-файлами, поэтому для данного атрибута задается значение "XmlFile".

      Атрибут scope является регулярным выражением, которое определяет путь к конкретному изменяемому файлу. В данном случае планируется изменить только файл Web.config приложения (а не файлы Web.config во вложенных папках). Путь, с которым будет совпадать выражение, — это путь, сохраненный в ZIP-файле при создании пакета. Регулярное выражение в примере отражает расположение создания пакета по умолчанию для конфигурации построения Debug.

      Атрибут match — это выражение XPath, которое выбирает изменяемый XML-узел. Выражение должно выбирать текстовый узел или узел атрибута, но не элемент.

    3. Если необходимо обновить одно значение параметра в нескольких местах, создайте дополнительный элемент parameterEntry для каждого места, где требуется обновить значение параметра.

  4. Выполните построение пакета.

Если установка пакета выполняется с помощью файла deploy.cmd, можно предоставить значение, отличное от значения по умолчанию, изменив файл SetParameters.xml. (Если параметры создаются вручную в файле parameters.xml, Visual Studio автоматически добавляет их в файл SetParameters.xml при построении пакета. См., например, предыдущую процедуру, которая относится к параметрам скриптов базы данных.)

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

Диалоговое окно сведений о пакете диспетчера IIS

Использование параметров для других сценариев

Описанные выше процедуры предоставляют подробные инструкции для типичных сценариев, в которых используются параметры. Параметры можно также использовать для других сценариев, например в случае необходимости обновлять содержимое текстового файла или XML-файлов, отличных от файлов Web.config. В следующей процедуре описывается способ использования параметров для других сценариев.

Использование параметров других типов

  1. Создайте параметр, добавив элемент parameter в файл parameters.xml, как описано в предыдущей процедуре для параметров файла Web.config.

  2. Добавьте один или несколько элементов parameterEntry, которые указывают, где должно использоваться значение параметра.

    Сведения о других атрибутах и значениях атрибутов, которые можно присвоить элементу parameterEntry, см. в разделе Использование declareParam и setParam на веб-сайте Microsoft TechNet.

См. также

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

Карта содержимого веб-развертывания для Visual Studio b ASP.NET

Другие ресурсы

Сравнение параметризации и преобразований Web.config в блоге Vishal Joshi

Параметризация Web Deploy в действии в блоге Vishal Joshi