Проблема развертывания веб-приложения с помощью команды MSDeploy - PullRequest
5 голосов
/ 24 февраля 2012

У меня есть веб-приложение, и я пытаюсь развернуть его на веб-сервере с помощью MSDeploy.exe (Web Deploy 2)

Я испробовал 4 сценария:

  1. Через VS2010 метод публикации со следующими настройками:Метод публикации: веб-развертываниеСервисный URL: https://MyServerName:8172/MsDeploy.axdСайт / приложение: MyWebSiteNameРазрешить недоверенных: провереноИмя пользователя: MyUsernameПароль: мой парольЭтот метод работает просто отлично.На компьютере MyServerName запущена служба веб-управления;У меня есть веб-сайт MyWebSiteName, приложение MyWebAppName, а MyUserName является для него диспетчером IIS.

  2. Через VS2010 метод публикации со следующими настройками:Метод публикации: веб-развертываниеСервисный URL: https://MyServerName:8172/MsDeploy.axdСайт / приложение: MyWebSiteName / MyWebAppNameРазрешить недоверенных: провереноИмя пользователя: MyUsernameПароль: мой парольЭтот метод работает очень хорошо.

  3. Через командную строку MSDeploy.exe (внутри скрипта Powershell)$ Source = "contentPath = '...._ Опубликованные сайты \ MyWebApp'"$ Destination = "contentPath = MyWebSiteName, computerName = 'https://fc -wapps-trial: 8172 / MsDeploy.axd? Site = WebSiteTest', имя пользователя = MyUsername, пароль = MyPassword, AuthType = basic"MSDeploy -verb: sync -source: $ Source -dest: $ Destination -allowUntrustedЭтот метод также отлично работает.

  4. Через командную строку MSDeploy.exe (в сценарии Powershell)$ Source = "contentPath = '...._ Опубликованные сайты \ MyWebApp'"$ Destination = "iisApp = MyWebSiteName / MyWebAppName, computerName = 'https://fc -wapps-trial: 8172 / MsDeploy.axd? Site = WebSiteTest / MyWebAppName', имя пользователя = MyUsername, пароль = MyPassword, AuthType = basic"MSDeploy -verb: sync -source: $ Source -dest: $ Destination -allowUntrustedЭтот метод не работает.Я получаю следующую ошибку.Код ошибки: ERROR_USER_UNAUTHORIZEDДополнительная информация: подключен к конечному компьютеру («MyServerName») с помощью службы веб-управления, но не может авторизоваться.Убедитесь, что вы используете правильное имя пользователя и пароль, что сайт, к которому вы подключаетесь, существует, и что учетные данные представляют пользователя, у которого есть разрешения на доступ к сайту.Ошибка: удаленный сервер возвратил ошибку: (401) Unauthorized.

Я смотрел на то, что является командой actall MSDeploy, которую использует метод 2, и я получил что-то вроде:msdeploy.exe-source: манифест = '... \ MyWebApp.SourceManifest.xml'-dest: авто, ИмяКомпьютер = 'https://MyServerName:8172/MsDeploy.axd?site=WebSiteTest',UserName='MyUsername',Password='MyPassword',IncludeAcls='False',AuthType='Basic'-verb: синхронизация-disableLink: AppPoolExtension-disableLink: ContentExtension-disableLink: CertificateExtension-skip: имя_объекта = 'dirPath', absolutepath = '... \ App_Data $'-setParam: вид = 'ProviderPath', область = 'IisApp', матч = '^ ... \ PackageTmp $', значение = WebSiteTest / WebAppTest-setParam: вид = 'ProviderPath', область = 'SetACL', матч = '^ .. \ PackageTmp $', значение = WebSiteTest / WebAppTest-allowUntrusted-retryAttempts = 2Теперь это не похоже на то, что я использую в методе 4. Я попытался запустить его сам, но безуспешно, но я предполагаю, что не смог правильно воссоздать все эти параметры.

Итак, мои вопросы:- Что я делаю не так в методе 4?- Как развернуть веб-приложение как приложение веб-сайта в IIS7 с помощью команды MSDeploy.exe

Заранее спасибо за помощьЮлиан

Ответы [ 2 ]

7 голосов
/ 12 апреля 2012

Я столкнулся с той же проблемой, что и вы. Я решил это, используя только имя сайта в https://computername:8172/msdeploy.axd?site={websitenameonly}. Затем задайте путь к веб-приложению в параметре, используя -setParam IIS Web Application Name = {имя вашего веб-приложения здесь} или используйте файл параметров. И все развернуто нормально.

Похоже, что значение строки запроса сайта требуется только для авторизации запроса. Я не нашел окончательной документации от MS по другим параметрам строки запроса, которые могли бы решить эту проблему. Но я на самом деле проверил 2 случая. 1) При развертывании на веб-сайте в IIS 7.5 этот параметр является обязательным. 2) При развертывании в веб-приложении под веб-сайтом этот параметр на самом деле является необязательным, но если вы хотите включить его, то это должен быть корневой сайт.

Вы на самом деле ответили на свой вопрос здесь, просто, вероятно, не поняли его.

0 голосов
/ 22 мая 2013

Пожалуйста, проверьте вашу делегацию службы управления (если вы еще этого не сделали).Нажмите на главном сайте в диспетчере IIS, чтобы открыть все параметры веб-развертывания на центральной панели.Внизу (за пределами ASP.NET, IIS и т. Д.) В разделе «Управление» вы должны увидеть несколько параметров, в том числе «Делегирование службы управления».

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

Убедитесь, что тип провайдера, с которым вы пытаетесь установить связь (iisApp, contentPath и т. д.) не только указан в списке, но и содержит требуемый путь / область действия, которые вы используете с разрешениями, которые были очищены.

Помните: вам не нужно использовать пользователя типа администратора, если делегированиенастроить правильно.И вы перешли к разрешениям IIS Manager соответствующего сайта и добавили «Разрешенного пользователя», например «Домен \ Пользователь», или даже пользовательского пользователя IIS Manager.

...