Вопросы и ответы о развертывании проектов веб-приложений для Visual Studio и ASP.NET

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

Многие ответов можно изменить параметры указывают развертывания при редактировании файла профиля публиковать (.pubxml) или файл wpp.targets. Дополнительные сведения об этой операции см. в разделе Как изменять параметры развертывания в файлах профиля публикации (PUBXML) и файле .wpp.targets в веб-проектах Visual Studio.

В этом разделе содержатся следующие подразделы.

  • Можно ли исключить определенные файлы или папки из развертывания?

  • Поэтому все файлы в папке проекта, не получают развертыванными?

  • Можно включить конкретные файлы или папки из папки проекта вне моей?

  • Инструкции отключить преобразование Web.config?

  • Когда должен ли использоваться параметры веб-развертывание вместо преобразований Web.config?

  • Разделы справки развертывает базы данных без использования Code First производит передачу?

  • Как отладить процесс развертывания пакетов или публикации?

  • Можно ли использовать службу удаленного агента через протокол HTTPS при публикации одним щелчком?

  • Можно ли использовать параметр поставщика tempAgent инструмента "Веб-развертывание" с публикацией одним щелчком?

  • Можно ли при публикации одним щелчком создать пакет для архивации?

  • Можно ли сделать так, чтобы при каждом построении решения создавался пакет?

  • Разделы справки содержит мой домен приложения из перезапустить несколько раз во время длительной операции процесса развертывания?

  • Почему возникает ошибка с сообщением, что необходима платформа ASP.NET 4, если эта платформа уже установлена?

  • Почему развертывание завершается неудачей, если оно пытается выполнить команду базы данных CREATE USER или CREATE ROLE?

  • Можно ли создать один пакет и с его помощью выполнить развертывание и в IIS 6, и в IIS 7?

  • Зачем удаленное развертывание завершается ошибкой для больших файлов, несмотря на то, что локальное развертывание завершается успешно?

Можно ли исключить определенные файлы или папки из развертывания?

Ограничить количество развертываемых файлов можно, выбрав параметр Только необходимые для запуска приложения файлы или Все файлы в этом проекте на вкладке Упаковка и публикация веб-проекта. Если выбран параметр Все файлы в этом проекте, можно щелкнуть файл правой кнопкой мыши в обозревателе решений и выбрать команду Исключить из проекта, чтобы этот файл не развертывался. Дополнительные сведения о том, какие файлы удаляются при использовании параметров только файлы, необходимые для выполнения этого приложения или Все файлы в этом проекте см. в разделе Поэтому все файлы в папке проекта, не получают развертыванными?.

Если эти параметры не гибки недостаточно, то правка .pubxml или файл .wpp.targets и добавьте элемент ExcludeFilesFromDeployment или элемент ExcludeFoldersFromDeployment (или оба) в элементе PropertyGroup. В каждом элементе, можно задать единое имя или можно указать несколько имен, разделенные точками с запятой (;), как показано в следующем примере:

<PropertyGroup">
  <ExcludeFilesFromDeployment>
    File1.aspx;File2.aspx
  </ExcludeFilesFromDeployment>
  <ExcludeFoldersFromDeployment>
    Folder1;Folder2
  </ExcludeFoldersFromDeployment>
</PropertyGroup> 

Дополнительные сведения см. в разделе следующие записи блога на блоге Sayed Hashimi:

  1. инструмент веб-развертывания (MSDeploy): Пакет построения, включая дополнительные файлы или исключить конкретные файлы

  2. инструмент веб-развертывания (MSDeploy): Как исключить файлы из пакета на основе конфигурации

К началу

Поэтому все файлы в папке проекта, не получают развертыванными?

В меню пункт ПроектПроект чтобы открыть вкладку Упаковка и публикация веб-проекта окна Свойства проекта. Раскрывающегося списка в разделе Элементы для развертывания (применяется для всех способов развертывания) предлагает 3 параметра:

  • Только необходимые для запуска приложения файлы. Это значение по умолчанию. Visual Studio пытается определить, какие файлы, необходимые для запуска приложения. Например, это позволяет сборки в папке файлах, созданных во время построения и файлах позиции, помеченных как Содержимое. Чтобы просмотреть если файл помечен как Содержимое, выберите файл в Обозреватель решений и проверьте свойство Действие при построении файла в поле Свойства. Можно изменить значение Действие при построении к Содержимое для файла для развертывания или изменить его что-либо еще, как Нет, предотвратить файла для развертывания. Несколько типов файлов, которые автоматически устанавливаются на Содержимое включают master, svc, ashx, .asax, обложки, browser, config, карты сайта .and. Файл необходимо включить в проекте иметь свойство Действие при построении.

  • Все файлы проекта. Visual Studio развертывает все файлы, включенные в проект, независимо от их значений свойств Действие при построении.

  • все файлы в папке проекта. Visual Studio развертывает все файлы, которые в папке и вложенных папках проекта, независимо от того, включены ли они в проекте или их значениях свойства Действие при построении.

Если вы знакомы с синтаксисом MSBuild, можно найти сведения о том, как эти 3 параметра работают в следующих файлах:

  • Microsoft.Web.Publishing.OnlyFilesToRunTheApp.targets

  • Microsoft.Web.Publishing.AllFilesInTheProject.targets

  • Microsoft.Web.Publishing.AllFilesInProjectFolder.targets

Эти файлы можно найти в следующей папке на компьютере, на котором установлен Visual Studio:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\

К началу

Можно включить конкретные файлы или папки из папки проекта вне моей?

Да. Сведения о том, как это сделать, см. Построение пакета, включая дополнительные файлы или исключить конкретные файлы в блоге Sayed Hashimi.

К началу

Инструкции отключить преобразование Web.config?

Имеется несколько параметров:

  • Закомментируйте конкретные преобразования в файле преобразования Web.config.

  • Переименуйте файл преобразования на имя, которое не соответствует определенной конфигурации построения или профилирования публиковать. Например, можно изменить имя Web.Debug.config на Web.Debugx.config. (Можно переименовать файл вне Visual Studio).

  • Удалите файл преобразования. Если файл преобразования был настроен, все настройки будут потеряны.

  • Правка файл .pubxml или файл .wpp.targets путем добавления элемента TransformWebConfigEnabled к элементу PropertyGroup и установить его значение на False.

К началу

Когда должен ли использоваться параметры веб-развертывание вместо преобразования Web.config?

Параметры веб-развертывание более сложны для настройки, чем преобразования Visual Studio Web.config, но очень гибки. Параметры веб-развертывание сложны для настройки, поскольку они могут автоматизации многих других задач развертывания, например скрипты базы данных и параметры IIS. Параметры веб-развертывание полезны для преобразования Web.config при создании пакета развертывания и при создании пакета неизвестно значения, которые должны перейти в развертыванное файл web.config. Параметры веб-развертывание позволяют указать значения для параметров, когда пакет установки, а не только в то время, когда она была создана. Это особенно полезно в тех средах, где оно enterprise, общее для разных пользователей, отвечает за создание и установить пакеты развертывания. Например, разработчик, создающий пакет может не знать некоторые паролей, которые должны находиться в файле web.config. Администратор ИТ, который установит пакет может вводить эти значения, когда пакет установки. Дополнительные сведения см. в Parameterization ДЛЯ. преобразования Web.config блоге Vishal Joshi и Практическое руководство. Использование параметров веб-развертывания в пакете веб-развертывания.

К началу

Разделы справки развертывает базы данных без Code First производит передачу?

При реализации класса контекста Code First Entity Framework для доступа к базе данных, вкладка " Параметры мастера Опубликовать веб-сайт отображает флажок, позволяющий использовать миграция Code First для автоматизации развертывания для этой базы данных. Но если только доступ к базе данных с помощью API Code First и Code First не использует для создания базы данных, нельзя использовать миграция, чтобы развернуть ее. В этом сценарии которой следует флажок Обновления базы данных, который позволяет развертывать база данных SQL Server, что не используется контекст Code First.

Развертывание базы данных Code First производит передачу без использования

  1. В Visual Studio если имеется открытый мастера Опубликовать веб-сайт, закройте ее.

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

  3. Постройте проект, а затем откройте мастер Опубликовать веб-сайт и выберите профиль необходимо работать с.

  4. Выберите вкладку Параметры.

    Теперь отображается 2 записей для базы данных в разделе Базы данных вкладки, по одной для класса контекста Code First и один для новой строки подключения в файле web.config.

  5. Записи для класса контекста Code First введите строку подключения, что требуется приложению использовать во время выполнения, и снимите флажок Примените миграция Code First.

  6. В новой строки подключения в файле web.config, введите строку соединения, которая должна использоваться для внесения изменений схемы во время развертывания и выбрать Обновление базы данных.

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

К началу

Как отладить процесс развертывания пакетов или публикации?

Уровень детализации сведений об упаковке и публикации контролируется тем же параметром Visual Studio, который определяет детализацию сведений MSBuild. В главном меню последовательно выберите пункты Инструменты и Параметры. В диалоговом окне Параметры разверните узел Проекты и решения и выберите пункт Построение и запуск. Отобразится раскрывающийся список Степень подробности сообщений при построении проекта MSBuild, в котором можно выбрать один из следующих параметров.

  • Отсутствуют

  • Минимальный

  • Обычные

  • Подробные

  • Диагностические

Аналогичные параметры задаются флагом /verbosity или /v при запуске MSBuild из командной строки. Дополнительные сведения о флагах командной строке MSBuild см. в разделе Справочник по командной строке MSBuild.

К началу

Можно ли использовать службу удаленного агента через протокол HTTPS при публикации одним щелчком?

Нет. При вводе URL-адреса HTTPS в текстовое поле URL-адреса диалогового окна Публикация веб-сайта Visual Studio автоматически использует службу управления Windows. Если нужно использовать протокол HTTPS, рекомендуется использовать службу управления Windows.

К началу

Можно ли использовать параметр поставщика tempAgent инструмента "Веб-развертывание" с публикацией одним щелчком?

Нет. Если нужно использовать параметр поставщика tempAgent, необходимо применить команду Web Deploy или файл deploy.cmd, созданный Visual Studio одновременно с пакетом развертывания.

К началу

Можно ли при публикации одним щелчком создать пакет для архивации?

Можно создать публиковать профили 2, чтобы публиковать создать проект, и один резервный пакет. Затем после публикующ проект просто должны перейти в профиль публиковать, который создает пакет и нажмите кнопку Опубликовать попытку. Дополнительные сведения о создании публиковать профилируйте, создает пакет, " см. Как создать пакет веб-развертывания в Visual Studio.

К началу

Можно ли сделать так, чтобы при каждом построении решения создавался пакет?

Да. Отредактируйте файл проекта, добавив элемент DeployOnBuild в соответствующий элемент PropertyGroup. (Дополнительные сведения о том, как изменить файл проекта см. в Практическое руководство. параметры развертывания правки в файле проекта разделе). В следующем примере показан элемент PropertyGroup для конфигурации построения Release.

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <DeployOnBuild>True</DeployOnBuild>
  <!-- Additional settings -->
</PropertyGroup>

Если внести это изменение в файле проекта, убедитесь в том, что элемент PropertyGroup, обновлении до выписками Import найти в файле проекта. (Свойство DeployOnBuild необходимо установить до Import для Microsoft.Web.Publishing.targets).

Для элемента DeployDefaultTarget должно быть задано значение Package. Это необязательно, поскольку это значение по умолчанию.

Это все, что нужно сделать, чтобы облегчить создание пакета автоматическим при построении решения из командной строки. Чтобы обеспечить автоматическое создание пакета работать при построении решения Visual Studio добавьте следующий код в файл проекта после Import для Microsoft.CSharp.targets или Microsoft.VisualBasic.targets:

<PropertyGroup> 
  <BuildDependsOn> 
    $(BuildDependsOn); 
    Package 
  </BuildDependsOn> 
</PropertyGroup>

К началу

Можно ли настроить правила делегирования так, чтобы разработчики могли выполнять развертывание на серверы промежуточного хранения, но не могли изменять параметры IIS?

Это возможно в IIS 7 и более поздних версиях. Сведения о делегировании разрешений развертывания см. в следующих разделах.

К началу

Разделы справки содержит мой домен приложения из перезапустить несколько раз во время длительной операции процесса развертывания?

Если необходимо выполнять команды несколько копирующих развертывания приложения и значительно интервал времени между ними, то домен приложения может перезапустить между командами копии. Чтобы избежать перезапуска добавьте элемент Элемент httpRuntime (схема параметров ASP.NET) в файл web.config и присвойте атрибуту waitChangeNotification на количество секунд для ожидания, чтобы убедиться в том, что домен приложения не перезапускает между командами копии. Например, если требуется задать пятисекундную задержку, элемент httpRuntime может выглядеть так, как в следующем примере.

<configuration>
  <system.web>
        <compilation debug="false" targetFramework="4.0" />
    <httpRuntime 
      waitChangeNotification="5" />
  </system.web>
</configuration>

Если требуется обеспечить, чтобы домен приложения был перезапущен не позднее определенного времени после выполнения первой команды копирования, добавьте атрибут maxWaitChangeNotification к элементу httpRuntime и задайте для него максимальное время ожидания (в секундах). Например, файл Web.config, в котором элемент httpRuntime имеет оба атрибута, может выглядеть так, как показано в следующем примере.

<configuration>
  <system.web>
    <httpRuntime 
      waitChangeNotification="5"
      maxWaitChangeNotification="10" />
  </system.web>
</configuration>

К началу

Почему возникает ошибка с сообщением, что необходима платформа ASP.NET 4, если эта платформа уже установлена?

Чтобы развернуть веб-приложение ASP.NET 4, необходимо зарегистрировать ASP.NET 4 в службах IIS на целевом сервере. Кроме того, пул приложений веб-сайта IIS, в который выполняется развертывание, должен быть назначен платформе .NET Framework 4. Если не выполнено какое-либо из этих условий, при попытке развертывания может возникнуть одна из следующих ошибок.

  • Пул приложений .NET 4.0 по умолчанию не существует, либо приложение не удалось добавить. Убедитесь, что платформа ASP.NET 4.0 установлена на этом компьютере.

  • Для свойства "managedRuntimeVersion" пула приложений, который вы пытаетесь использовать, установлено значение "v2.0". Для этого приложения требуется "v4.0".

ASP.NET 4 устанавливается вместе с Visual Studio. Однако в процессе установки ASP.NET 4 не регистрируется автоматически в службах IIS, и существующие веб-сайты IIS не назначаются автоматически пулам приложений .NET 4. Чтобы исправить эту ошибку, зарегистрируйте ASP.NET в службах IIS и задайте пул приложений целевого веб-сайта IIS версии платформы .NET Framework, необходимой для этого пакета. Сведения о регистрации в службах IIS см. в разделе ASP.NET IIS Registration Tool (Aspnet_regiis.exe).

К началу

Можно ли создать один пакет и с его помощью выполнить развертывание и в IIS 6, и в IIS 7?

Если значение любого из следующих условий, можно использовать один и тот же пакет для развертывания в службах IIS 6 и IIS 7:

  • Не выбран параметр Включить все параметры IIS в соответствии с их настройками в диспетчере служб IIS на вкладке Упаковка и публикация веб-проекта.

  • При выборе параметра Включить все параметры IIS в соответствии с их настройками в диспетчере служб IIS создается пакет для IIS 6.

Нельзя развернуть в IIS 6 пакет, созданный для IIS 7, если выбран параметр Включить все параметры IIS в соответствии с их настройками в диспетчере IIS.

К началу

Зачем удаленное развертывание завершается ошибкой для больших файлов, несмотря на то, что локальное развертывание завершается успешно?

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

Warning: Retrying the sync because a socket error (10054) occurred.

Retrying operation 'Serialization' on object MSDeploy.contentPath (sourcePath).

На целевом сервере, можно увидеть сообщения об ошибке в следующем примере:

System.Net.HttpListenerException: An operation was attempted on a nonexistent network connection

К началу

См. также

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

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