msdeploy (Web Deploy) błąd z 401 AUTH problemy

Próbuję zainstalować msdeploy i skonfigurować. Zainstalowałem zdalną usługę na serwerze WWW, ale wszystkie moje testy dają mi 401 unauthorised error. Serwerem jest Windows 2008 R2.

Testuję bardzo proste polecenie msdeploy:

msdeploy -verb:dump -source:contentPath=c:\inetpub\wwwroot\MyApp,computerName=<IP HERE>,userName=Domain\msdeploy,password=MyPassword

I błąd:

Error: Object of type 'contentPath' and path 'c:\inetpub\wwwroot\MonApp' cannot be created.
Error: Remote agent (URL http://<IP HERE>/MSDEPLOYAGENTSERVICE) could not be contacted.  Make sure the remote agent service is installed and started on the target computer.
Error: An unsupported response was received. The response header 'MSDeploy.Response' was '' but 'v1' was expected.
Error: The remote server returned an error: (401) Unauthorized.
Error count: 1.

Stworzyłem użytkownika o nazwie msdeploy i dodałem go do Lokalnej Grupy adminów na serwerze.

Sprawdziłem:

  • że serwis zainstalowany poprawnie i uruchomiłem go
  • różne nazwa użytkownika nie jest używana, a authType=Basic
  • pełne uprawnienia do tego folderu dla wszystkich
  • in IIS allow remote connections
  • Dodano zasady delegowania usług zarządzania dla mojego użytkownika "msdeploy" dla contentPath i iisApp (luźno oparte na odczycie this)
  • próbowałem z innym kontem administratora, którego używam do RDC na serwerze...
  • próbowałem z różnymi treściami i różnymi msdeploy komendy
  • utworzył określone konto i dodał je do IIS_Users. Dodano tego użytkownika na mojej stronie internetowej "uprawnienia menedżera usług IIS" i skonfigurować "delegowanie usług zarządzania" dla wszystkich dostawców.
Author: Kev, 2010-12-13

5 answers

Zakładam, że skonfigurowałeś swój serwer poprawnie dla WebDeploy 2.0 zgodnie z tym artykułem:

Konfiguracja Web Deploy (IIS.NET)

Uwaga: MS wydało odświeżenie Web Deploy 2.0 i oryginalny link nie jest już tak naprawdę poprawny. Zaktualizowałem to, ale myślę, że z czasem będzie to ruchomy cel.

Musisz również zainstalować Web Deploy 2.0 na swojej maszynie development/build/CI.

If you ' re still korzystanie z 1.0 to polecam Upgrade, jest kilka ogromnych ulepszeń w 2.0.

Korzystanie z funkcji publikowania w Visual Studio 2010:

Visual Studio może opublikować witrynę, klikając ją prawym przyciskiem myszy i wybierając opcję "Publikuj". To wywołuje następujący dialog:

Tutaj wpisz opis obrazka

Jest kilka momentów z Visual Studio 2010 i WebDeploy 2.0. Po pierwsze, VS2010 nie jest świadomy WebDeploy/MSDeploy 2.0. Więc jeśli spróbujesz opublikować, otrzymasz błąd taki jak:

Error 1 Web deployment task nie udało się.((04/02/2011 12: 30: 40) wystąpił, gdy wniosek został przetwarzane na zdalnym komputerze.)

Tutaj wpisz opis obrazka

Zobaczysz również następujący błąd w nieudanym śledzeniu żądań dla usługi zarządzania siecią na serwerze w C:\inetpub\logs\wmsvc\TracingLogFiles\W3SVC1 zakładając, że masz to włączone:

AspNetModuleDiagErrorEvent
Uri / msdeploy.axd
śledzenie eventData wdrożenie Agent exception. Identyfikator żądania ''. Znacznik Czasu Żądania: '02/04/2011
System.Nieautoryzowanyaccessexception: dostęp do ścieżki 'd:\' jest zabroniony.

Tutaj wpisz opis obrazka

Litera dysku będzie się różnić w zależności od tego, na którym dysku znajduje się Twoja witryna IIS.

Po wyjęciu z pudełka mechanizm publikowania w GUI domyślnie używa niewłaściwej wersji MSDeploy (1.0). Chcemy powiedzieć VS2010, aby korzystał z MSDeploy 2.0. Można to zrobić edytując plik devenv.exe.config Visual Studio 2010, który znajduje się w (zakładając, że wykonałeś domyślną instalację dysku c:\):

Dla Systemów 64-bitowych: c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE Dla systemów 32-bitowych: c:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE

Otwórz devenv.exe.config w swoim ulubionym edytorze XML (właśnie użyłem samego Visual Studio 2010) i skopiuj następujący xml:

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

Dodaj to do sekcji /configuration/runtime/assemblyBinding:

Tutaj wpisz opis obrazka

Gdy już to zrobisz, Zamknij wszystkie instancje Visual Studio 2010, aby umożliwić wprowadzenie tej zmiany. Uruchom ponownie VS2010, Otwórz projekt internetowy, a następnie spróbuj opublikować jeszcze raz. Tym razem powinno się udać.

Publikowanie za pomocą pakietu kompilacji:

Visual Studio może stworzyć pakiet kompilacyjny, który można wykonać z wiersza poleceń. Jest to generowane za pomocą Project -> Build Deployment Package. Przydatne do ciągłej integracji i tym podobnych (pakiet można również wygenerować za pomocą msbuild za pomocą przełącznika /t:Package).

Folder wyjściowy pakietu zwykle domyślnie wynosi obj\Package.

Niestety Visual Studio 2010 trochę się myli i generuje skrypt wsadowy MSDeploy wrapper targeting 1.0 i targeting deploy na serwerze, a nie na poziomie witryny.

Nie ma szybkiego rozwiązania dla tego innego niż stworzenie własnego msdeploy.wiersz poleceń exe. Podzieliłem to na kilka linii, aby było bardziej czytelne.:

"C:\Program Files\IIS\Microsoft Web Deploy v2\\msdeploy.exe"
  -source:archiveDir='d:\sites\DemoApp\obj\Package\Archive' 
  -dest:
       auto,
       computerName='https://yoursite.com:8172/msdeploy.axd?site=yoursitename',
       userName='demosite',
       password='somepassword',
       authtype='basic',
       includeAcls='False' 
  -verb:sync 
  -disableLink:AppPoolExtension 
  -disableLink:ContentExtension 
  -disableLink:CertificateExtension 
  -setParamFile:"d:\sites\DemoApp\obj\Package\Archive.SetParameters.xml"   
  -allowuntrusted

Pierwszą rzeczą, którą należy zwrócić uwagę, jest ścieżka do msdeploy.exe. Visual Studio generuje ścieżkę do wersji 1.0. Zmieniłem to na 2.0.

godne uwagi parametry:

-source:archiveDir= informuje msdeploy, że wdrażamy pakiet i podaje lokalną lokalizację

computerName='https://yoursite.com:8172/msdeploy.axd?site=yoursitename' - to mówi MSDEPLOY wdrożyć do określonej witryny na IIS7. yoursitename powinien dokładnie pasować do nazwy witryny w IIS.

userName i password are to nazwa użytkownika delegowanego menedżera dla witryny. Jest to skonfigurowane przy użyciu funkcji" Uprawnienia Menedżera usług IIS " na poziomie witryny. Konto musi być lokalnym kontem użytkownika systemu Windows.

-authtype='basic' - wymusza to uwierzytelnianie podstawowe w przeciwnym razie próba uwierzytelniania NTLM.

-allowuntrusted - ignoruje to wszelkie błędy certyfikatu SSL, Jeśli używasz wbudowanego certyfikatu SSL z własnym podpisem.

Jeśli używasz tej linii poleceń, powinieneś być w stanie wdrożyć zdalny serwer IIS7 z powodzeniem.

Publikowanie Surowej Treści:

Czasami chcemy po prostu opublikować statyczną zawartość (a może nawet klasyczną stronę ASP lub PHP) bezpośrednio z folderu lokalnego. Możemy zrobić to za pomocą następującego wiersza poleceń msdeploy.exe:

"C:\Program Files\IIS\Microsoft Web Deploy v2\\msdeploy.exe" 
  -source:contentPath='d:\websites\mysite' 
  -dest:
     contentPath='yoursitename',
     computerName='https://yoursite.com:8172/msdeploy.axd?site=yoursitename',
     userName='demosite',
     password='somepassword',
     authtype='basic',
     includeAcls='False' 
-verb:sync 
-allowuntrusted 

Ponownie obowiązują te same zasady co poprzednio dla -dest:contentPath i computerName.

Wierzę, że problemy z wersją MSDeploy zostaną rozwiązane w SP1(na które jeszcze nie miałem okazji się przyjrzeć).

One Final VS2010 Gotcha:

Podczas publikowania za pomocą Visual Studio 2010, pakiet kompilacji "Publikuj" powoduje, że ACL konta anonimowego witryny zmienia się na Tylko do odczytu dla wszystkich plików i folderów z wyjątkiem folderu App_Data, który został zmieniony na odczyt i zapis.

Można to obejść, dodając następujące ustawienie do pliku .csproj pod każdym <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">:

<IncludeSetAclProviderOnDestination>False</IncludeSetAclProviderOnDestination>

Lub jeśli używasz msbuild:

msbuild.exe myproject.csproj /t:Package /p:IncludeSetAclProviderOnDestination=False

Znalazłem ten przydatny samorodek stąd:

W wersji 2010 program Visual Studio 2010 został zastąpiony przez Visual Studio 2010, a także Visual Studio 2010 Visual Studio 2010 Visual Studio 2010 Visual Studio 2010 Visual Studio 2010 Visual Studio 2010 Visual Studio 2010 Visual Studio 2010 Visual Studio.]}

 56
Author: Kev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-06 13:05:28

Dla mnie publikowanie działało w Visual Studio, ale nie działało, gdy uruchomiłem skrypt .deploy.cmd.

Ustawiając <UseMsdeployExe>true</UseMsdeployExe> w swoim .csproj, możesz wymusić użycie msdeploy.exe zamiast zadania MSBuild. Następnie poprzez podkręcenie poziomu logowania (Narzędzia > Opcje > projekty i rozwiązania > Build and Run > MSBuild project build output verbosity) możesz zobaczyć wiersz poleceń, którego używa VS.

Problemy z moim .deploy.cmd były:

  • mój użytkownik IIS miał tylko uprawnienia na tej stronie więc potrzebowałem {[4] } w computerName.
  • potrzebowałem AuthType='Basic' w parametrze -dest:.
 6
Author: Ben Challenor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-22 10:47:18

Mieliśmy podobny problem jak Twój.

W tym celu należy uruchomić usługę agenta zdalnego w usłudze. Użyliśmy nazwy komputera, ponieważ adres IP dawał błąd. Spróbuj więc użyć nazwy komputera, nazwy użytkownika i hasła.

 3
Author: navya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-18 06:53:55

W końcu nigdy nie sprawdzałem, jakich uprawnień mi brakowało w Moim Koncie Użytkownika deploy - ale okazało się, że jeśli użyję konta administratora maszyny, wdrożenie się powiedzie. Na razie używam konta administratora do wdrożenia.

Wyrazy uznania dla Kev za fantastyczne i pouczające podsumowanie konfiguracji ms deploy 2:)

 1
Author: Matt Roberts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-02 07:31:58

Jeśli to coś znaczy. Publikowanie działało dla mnie i pewnego dnia miałem ten sam problem (błąd nieautoryzowanego 401) ponowne uruchomienie VS2012 rozwiązało problem. Żałuję, że nie próbowałem tego przed wypróbowaniem każdego innego rozwiązania.

 0
Author: Howard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-17 19:05:35