Хобрук: Ваш путь к мастерству в программировании

Проблема развертывания с помощью Web Deploy и ACL

Я развертываю веб-приложение на своем хосте с помощью Web Deploy. При запуске из Visual Studio с помощью команды Publish все работает нормально. Когда я пытаюсь выполнить развертывание с помощью веб-развертывания из MSBuild, веб-сайт становится недоступным, и даже веб-панель управления моего веб-узла больше не может получить доступ к веб-сайту. Я отследил его до того, что, как я думаю, является разрешениями для папок веб-сайта.

Публикация из Visual Studio обновляет списки управления доступом, и веб-сайт работает правильно, а панель управления веб-узла работает (даже если она была нарушена при развертывании из MSBuild ранее).

Ниже приведен вывод при запуске из Visual Studio:

------ Publish started: Project: mywebapp, Configuration: Release Any CPU ------
Transformed Web.config using Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.
Auto ConnectionString Transformed Views\Web.config into obj\Release\CSAutoParameterize\transformed\Views\Web.config.
Auto ConnectionString Transformed obj\Release\TransformWebConfig\transformed\Web.config into obj\Release\CSAutoParameterize\transformed\Web.config.
Copying all files to temporary location below for package/publish:
obj\Release\Package\PackageTmp.
Start Web Deploy Publish the Application/package to https://myhost.net:8172/MsDeploy.axd?site=mywebapp.com ...
Updating setAcl (mywebapp.com).
Updating setAcl (mywebapp.com).
Updating filePath (mywebapp.com\bin\mywebapp.Core.dll).
Updating filePath (mywebapp.com\bin\mywebapp.Core.pdb).
Updating filePath (mywebapp.com\bin\mywebapp.dll).
Updating filePath (mywebapp.com\bin\mywebapp.pdb).
Updating filePath (mywebapp.com\Views\Web.config).
Updating filePath (mywebapp.com\web.config).
Updating setAcl (mywebapp.com).
Updating setAcl (mywebapp.com).
Publish is successfully deployed.
========== Build: 2 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========

Я нашел файл, который, по моему мнению, Visual Studio использует во время развертывания, содержащий информацию ACL. Он называется myapp.SourceManifest.xml и находится в папке C:\Projects\mywebapp\obj\Release\Package.

<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
  <contentPath path="C:\Projects\mywebapp\obj\Release\Package\PackageTmp" />
  <setAcl path="C:\Projects\mywebapp\obj\Release\Package\PackageTmp" setAclResourceType="Directory" />
  <setAcl path="C:\Projects\mywebapp\obj\Release\Package\PackageTmp" setAclUser="anonymousAuthenticationUser" setAclResourceType="Directory" />
</sitemanifest>

Мой файл MSBuild содержит следующее для выполнения развертывания:

<Exec Command='"$(ProgramFiles)\IIS\Microsoft Web Deploy v2\msdeploy.exe" -verb:sync -source:package="mywebapp\obj\test\package\mywebapp.zip" -dest:auto,computername="https://myhost.net:8172/MsDeploy.axd?site=mywebapp.com",username=XXXX,password=XXXX,authtype=basic -allowuntrusted:true -setparam:name="IIS Web Application Name",value="mywebapp.com"' />

Когда я запускаю MSBuild для развертывания, я вижу, что файлы обновляются, но ACL не обновляются.

Мое развертывание MSBuild происходит из другой папки из-за другой конфигурации (тестовой, а не выпускной), а файл mywebapp.SourceManifest.xml отличается.

<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
  <IisApp path="C:\Projects\mywebapp\obj\Test\Package\PackageTmp" managedRuntimeVersion="v4.0" />
</sitemanifest>

Различные файлы mywebapp.SourceManifest.xml, вероятно, как-то связаны с этим? Что мне нужно сделать, чтобы обновить ACL?


Обновить

Я обнаружил, что разница в файле mywebapp.SourceManifest.xml была вызвана наличием следующего в файле .csproj для моей тестовой конфигурации.

<IncludeSetAclProviderOnDestination>False</IncludeSetAclProviderOnDestination>

Я изменил это значение на True, и теперь файлы манифеста одинаковы для конфигураций Test и Release.

Я также обнаружил, что при использовании публикации из Visual Studio она работает для выпуска, но не работает для тестирования. Итак, теперь я пытаюсь выяснить, в чем разница между двумя конфигурациями, которая вызывает успешное или неудачное развертывание.

25.06.2011

Ответы:


1

Мне удалось заставить его работать. По словам моего веб-хостинга, есть некоторые проблемы с веб-развертыванием, над которыми они работают с командами Microsoft по веб-развертыванию и IIS, и им пришлось применить некоторые временные исправления на сервере. Странно, как это все работало пару месяцев назад.

В итоге я восстановил параметр <IncludeSetAclProviderOnDestination>False</IncludeSetAclProviderOnDestination> в файле моего проекта, чтобы веб-развертывание не касалось списков управления доступом. Мой веб-хост сказал, что он удаляет разрешения удостоверения пула приложений и не позволяет веб-панели управления получить доступ к папкам веб-сайта.

Они также сказали мне добавить <_MSDeployVersionsToTry Condition="'$(_MSDeployVersionsToTry)'==''">7.1;8.0;9.0</_MSDeployVersionsToTry> в файл проекта. Я добавил это, хотя я не уверен, что это имело значение.

25.06.2011
  • Кто ваш веб-хостинг? Я хотел бы связаться с ними, чтобы понять, какие отзывы они получили о Web Deploy. 29.07.2011
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

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

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..