Каков наилучший способ удаленной настройки запущенного веб-приложения asp.net? - PullRequest
0 голосов
/ 16 сентября 2011

У меня есть развернутое веб-приложение ASP.NET, и я пытаюсь выяснить, как лучше определить, на какую среду оно должно указывать при запуске, и убедиться, что я не упустил из виду ни одно из них. опции.

Сначала немного фона.

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

/Config/Environments/Development.xml
/Config/Environments/UAT.xml
/Config/Environments/Production.xml

Вопрос в том, как лучше всего указать приложению при запуске, какой файл конфигурации среды следует загрузить?

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

Я также хотел бы избежать изменения любых артефактов, создаваемых сборкой, особенно потому, что пакет веб-развертывания представляет собой zip-файл, и это будет означать перестройку пакета веб-развертывания.

Я предложил следующие варианты:

  1. Используйте переменную среды на целевом компьютере, чтобы указать, с какой средой начинать работу, и, если она отсутствует, по умолчанию для разработки. Основным недостатком этого является то, что я не смогу запустить два экземпляра приложения на одном компьютере, которые указывают на разные среды, и, поскольку мы, как правило, разворачиваем uat и промежуточные среды на одном компьютере, это может стать проблемой.

  2. Удаленно отредактируйте файл web.config, указав, с какой среды запускать, я не уверен, как это сделать, но это может быть лучшим вариантом (?).

  3. Возможно, вы можете что-то сделать с веб-развертыванием, например, указав ему установить значения web.config при запуске, но я не знаю, возможно ли это (?).

Я что-то упускаю из виду? Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 16 сентября 2011

Оказывается, третий вариант действительно возможен, я сделал следующее:

Создайте файл parameters.xml в корне проекта веб-приложения, который содержит параметры, которые я хочу изменить:

<parameters>
  <parameter name="Environment"
    description="Please provide the environment name for the application."
    defaultValue="Development"
    tags="">
    <parameterEntry
      kind="XmlFile"
      scope="\\web.config$"
      match="/configuration/appSettings/add[@key='Environment']/@value" />
  </parameter>
</parameters>

Это создаст SetParameters.xml в том же месте, что и ваш пакет развертывания, когда он будет создан.

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

<XmlUpdate
  XmlFileName="$(DeployFolder)\Project.SetParameters.xml"
  Xpath="/parameters/setParameter[@name='Environment']/@value"
  Value="$(Environment)" />

Теперь вы можете запустить deploy.cmd, и он будет устанавливать параметры при развертывании на удаленном компьютере.машина.

0 голосов
/ 16 сентября 2011

Если вы развертываете несколько экземпляров на одном компьютере, то я предполагаю, что пути к файлам могут быть полезны? например развернуть в путь к файлу с именем среды в папке: C: \ inetpub \ dev это, наверное, самый простой подход.

Если вы выберете вариант 1, я бы использовал переменную реестра вместо среды.

Вы также можете посмотреть на целевую среду в своем скрипте сборки в зависимости от сервера сборки, который вы используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...