Назад | Перейти на главную страницу

Компонент WebDeploy 2.0 на IIS7 - права доступа root

Я установил и настроил WebDeploy 2.0 на (тестовом) сервере, чтобы пользователи WebMatrix и Visual Studio 2010 могли использовать его для загрузки своих приложений в наши среды Windows 2008R2.

Это хорошо работает с WebMatrix, но я столкнулся с проблемой развертывания приложения из Visual Studio 2010. Если я нажимаю кнопку «Опубликовать» и использую метод WebDeploy, Visual Studio сообщает об ошибке и ничего не публикуется:

Итак, я включил отслеживание неудачных запросов для службы веб-управления и вижу следующее:

53 AspNetModuleDiagErrorEvent Uri /MsDeploy.axd eventData Исключение агента развертывания трассировки. ID запроса ''. Отметка времени запроса: «22.01.2011 00:18:54». Сведения об ошибке: System.UnauthorizedAccessException: доступ к пути 'd: \' запрещен.
в System.IO .__ Error.WinIOError (Int32 errorCode, String может бытьFullPath) в System.IO.DriveInfo.get_DriveFormat ()

Чтобы упростить использование функции WebDeploy, делегированному управляющему пользователю предоставляется полный контроль над веб-папками сайта. Это описано в этой статье:

Настройте компонент веб-развертывания на веб-сервере

Никаких других разрешений не упоминается. Учитывая характер ошибки, я попытался предоставить пользователю делегированного управления сайтом Read Attribute разрешение на D:\ и ограничил это This Folder Only и сразу же Visual Studio 2010 может опубликовать приложение с помощью WebDeploy.

Почему пакет Visual Studio ведет себя иначе, чем WebMatrix на сервере?

Это ошибка Visual Studio 2010, которая по умолчанию использует неправильную Microsoft.Web.Deployment сборка (7.1.0.0).

Чтобы решить эту проблему, необходимо внести изменения в файл конфигурации VS 2010, чтобы заставить его использовать 8.0.0.0:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config

<dependentAssembly>
  <assemblyIdentity 
     name="Microsoft.Web.Deployment" 
     publicKeyToken="31bf3856ad364e35" 
     culture="neutral"/>
  <bindingRedirect 
     oldVersion="7.1.0.0" 
     newVersion="8.0.0.0"/>
</dependentAssembly>

Приведенный выше фрагмент xml следует добавить в:

/configuration/runTime/assemblyBinding

Это было подтверждено группой Microsoft PSS. Очевидно, Visual Studio 2010 SP1 решит эту проблему.

Очевидно, вам потребуется установить MS WebDeploy 2.0 на компьютере развертывания. Его можно получить с помощью установщика веб-платформы или путем установки RTM Web Matrix 1.0, которая, кстати, работает правильно.