Udostępnij za pośrednictwem


Rozwiązywanie problemów z wdrażaniem w Internecie w programie Visual Studio

Dotyczy: Internet Information Services

Ten artykuł ułatwia rozwiązywanie problemów z serią błędów podczas próby opublikowania z programu Visual Studio na serwerze, który nie jest poprawnie skonfigurowany za pośrednictwem narzędzia Web Deploy. Chociaż artykuł jest napisany dla określonych wersji produktu, koncepcje można również zastosować do nowszych wersji.

Aby zebrać poniższe zrzuty ekranu i błędy, użyj nowego projektu MVC ASP.NET w programie Visual Studio. Serwer docelowy był czystą instalacją systemu Windows Server z usługami Internet Information Services (IIS). Nie wykonano żadnej innego konfiguracji.

Nie można nawiązać połączenia z serwerem

Pierwszy błąd, który prawdopodobnie napotkasz, wygląda podobnie do poniższego zrzutu ekranu w oknie danych wyjściowych programu Visual Studio. Aby zwiększyć czytelność, pełny tekst wiadomości znajduje się na zrzucie ekranu:

Zrzut ekranu przedstawiający dane wyjściowe listy błędów w programie Visual Studio.

Web deployment task failed.(Could not connect to the destination computer ("deployserver").On the destination computer, make sure that Web Deploy is installed and that the required process("The Web Management Service") is started.)
This error indicates that you cannot connect to the server. Make sure the service URL is correct,firewall and network settings on this computer and on the server computer are configured properly,and the appropriate services have been started on the server.
Error details:
Could not connect to the destination computer ("deployserver"). On the destination computer,
make sure that Web Deploy is installed and that the required process
("The Web Management Service") is started.
Unable to connect to the remote server
A connection attempt failed because the connected party did not properly respond after a period
of time, or established connection failed because connected host has failed to respond 192.168.0.211:8172

Tekst wyróżniony w tym błędzie (i inne błędy w poniższych sekcjach) jest kluczem do zrozumienia charakteru problemu. Narzędzie Web Deploy nie odpowiedziało z serwera, więc program Visual Studio nie może odróżnić kilku możliwych przyczyn. W rezultacie daje listę rzeczy do wypróbowania.

Czy usługa zarządzania siecią Web jest zainstalowana?

Na serwerze USŁUG IIS otwórz Menedżera usług Internet Information Services (IIS) i wybierz węzeł nazwy komputera. W widoku Funkcje przewiń w dół do sekcji Zarządzanie i poszukaj następujących ikon:

Zrzut ekranu przedstawiający ikonę Uprawnienia Menedżera usług IIS, ikonę Użytkownicy Menedżera usług IIS i ikonę usługi zarządzania.

Jeśli tam nie ma, musisz zainstalować usługę zarządzania za pomocą okna dialogowego Dodawanie usług ról. Można go również zainstalować za pośrednictwem Instalatora platformy sieci Web na karcie Produkty . Wybierz pozycję Serwer w lewej kolumnie i wybierz pozycję IIS: Usługa zarządzania.

Uwaga 16.

Po zainstalowaniu usługi zarządzania należy ją uruchomić, ponieważ nie jest uruchamiana automatycznie. W tym celu kliknij dwukrotnie ikonę Usługa zarządzania. Po wyświetleniu okienka Usługa zarządzania wybierz pozycję Uruchom w okienku Akcje po prawej stronie.

Czy adres URL usługi jest poprawny?

Domyślnie usługa zarządzania siecią Web nasłuchuje na porcie 8172, ale to ustawienie można zmienić. Najprostszym sposobem sprawdzenia, jaki port jest używany, jest otwarcie okienka Usługa zarządzania zgodnie z wcześniejszym opisem i zapoznanie się z informacjami o adresach IP i portach w sekcji Połączenia. Jeśli port został zmieniony na inny niż 8172, musisz upewnić się, że nowy port jest dozwolony przez zaporę i zaktualizować adres URL usługi w ustawieniach publikowania programu Visual Studio, aby użyć nowego portu.

(403) Zabronione

Po zainstalowaniu usługi zarządzania siecią Web program Visual Studio może wyświetlić następujący błąd:

Zrzut ekranu przedstawiający ekran Lista błędów w programie Visual Studio.

Web deployment task failed.(Could not connect to the destination computer ("deployserver") using
the specified process ("The Web Management Service") because the server did not respond.
Make sure that the process ("The Web Management Service") is started on the destination computer.)
Could not connect to the destination computer ("deployserver") using the specified process
("The Web Management Service") because the server did not respond. Make sure that the process
("The Web Management Service") is started on the destination computer.
The remote server returned an error: (403) Forbidden.

Ten komunikat jest mylący. Stwierdza się, że serwer nie odpowiedział, ale błąd 403 wskazuje, że narzędzie Web Deploy może skontaktować się z serwerem, ale żądanie zostało aktywnie odrzucone. Dziennik HTTP usługi zarządzania siecią Web może pomóc potwierdzić, że żądanie dotarło do serwera i podaj szczegółowe informacje o rzeczywistym żądaniu, które zakończyło się niepowodzeniem. Ten dziennik można znaleźć domyślnie.%SystemDrive%\Inetpub\logs\WMSvc Podobnie jak w przypadku innych dzienników usług IIS, dane nie są natychmiast zapisywane w dzienniku, więc może być konieczne odczekanie kilku minut, aby zobaczyć żądanie lub ponownie uruchomić usługę zarządzania siecią Web, aby opróżnić dziennik.

W dzienniku WMSVC zobaczysz następujący komunikat:

2011-06-02 17:59:05 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 - 192.168.0.203 - 403 6 5 1669

Po 6 zapisie 403 w dzienniku jest kod stanu podrzędnego i oznacza, że adres IP został odrzucony. Pełną listę kodów stanu i kodów stanu podrzędnych dla usług IIS można znaleźć na stronie Kody stanu HTTP w usługach IIS.

Czy usługa zarządzania jest skonfigurowana do zezwalania na połączenia zdalne?

Jest to najbardziej prawdopodobna przyczyna odpowiedzi 403.6. Kliknij dwukrotnie ikonę Usługa zarządzania i sprawdź, czy zaznaczono opcję Włącz połączenia zdalne. Musisz zatrzymać usługę, aby wprowadzić zmiany, więc pamiętaj, aby ją ponownie uruchomić po zakończeniu.

Zrzut ekranu przedstawiający okno dialogowe Usługa zarządzania.

Czy usługa zarządzania siecią Web jest dozwolona za pośrednictwem Zapory systemu Windows?

Podczas instalowania usługi zarządzania siecią Web na serwerze reguła zapory dla ruchu przychodzącego nosi nazwę Usługa zarządzania siecią Web (RUCH HTTP). Sprawdź, czy ta reguła jest włączona, przechodząc do obszaru Start>AdministrativeTools Zapora systemu Windows z zabezpieczeniami zaawansowanymi.> Wybierz pozycję Reguły ruchu przychodzącego i znajdź regułę zarządzania siecią Web na liście. Powinna być włączona dla wszystkich profilów.

Jeśli używasz zapory innej firmy, upewnij się, że połączenia przychodzące na porcie 8172 są dozwolone.

Czy ograniczenia adresów IP zostały skonfigurowane dla usługi zarządzania?

Innym typowym powodem wystąpienia błędu 403 jest to, że usługa zarządzania została skonfigurowana do odmowy adresu IP klienta. Domyślnie jest ona skonfigurowana tak, aby zezwalała na wszystkie adresy IP, o ile połączenia zdalne są dozwolone. Ograniczenia adresów IP można sprawdzić, klikając dwukrotnie ikonę Usługa zarządzania. Wszystkie skonfigurowane reguły ograniczeń adresów IP znajdują się w dolnej części strony w ograniczeniach adresów IPv4.

(404) Nie znaleziono

Zrzut ekranu przedstawiający stronę Lista błędów w programie Visual Studio. Szczegóły błędu znajdują się w fokusie.

Web deployment task failed.(Could not connect to the destination computer ("deployserver").
On the destination computer, make sure that Web Deploy is installed and that the required process
("The Web Management Service") is started.
The requested resource does not exist, or the requested URL is incorrect.
Error details: Could not connect to the destination computer ("deployserver").
On the destination computer, make sure that Web Deploy is installed and that the required process
("The Web Management Service") is started.
The remote server returned an error: (404) Not Found.

Błąd 404 wskazuje, że usługa Web Deploy mogła skontaktować się z usługą zarządzania siecią Web na serwerze, ale nie mogła znaleźć potrzebnych informacji. Najpierw należy potwierdzić, z jakim zasobem usługa Web Deploy próbowała nawiązać połączenie. Jeśli spojrzysz na dziennik usługi zarządzania siecią Web w obszarze %SystemDrive%\Inetpub\logs\WMSvc na serwerze docelowym, zostanie wyświetlony wpis w dzienniku WMSVC , który wygląda następująco:

2011-05-12 15:21:50 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 - 192.168.0.203 - 404 7 0 1606

Msdeploy.axd to procedura obsługi żądań web deploy.

Czy narzędzie Web Deploy jest zainstalowane?

Aby sprawdzić, czy narzędzie Web Deploy jest zainstalowane, przejdź do panelu sterowania Programy i funkcje i poszukaj narzędzia Microsoft Web Deploy 4.0 na liście zainstalowanych programów. Jeśli go nie ma, możesz pobrać go i zainstalować na oficjalnej stronie pobierania. Należy również upewnić się, że usługa agenta wdrażania sieci Web (MsDepSvc) jest uruchomiona.

Czy program obsługi wdrażania sieci Web jest zainstalowany?

Jeśli narzędzie Web Deploy jest zainstalowane i nadal występuje ten błąd, upewnij się, że jest zainstalowana funkcja obsługi wdrażania usług IIS w narzędziu Web Deploy. W panelu sterowania Programy i funkcje znajdź pozycję Microsoft Web Deploy 4.0, kliknij go prawym przyciskiem myszy i wybierz polecenie Zmień. W kreatorze, który pojawi się, wybierz przycisk Dalej na pierwszej stronie, a następnie wybierz pozycję Zmień na drugiej stronie. Dodaj program obsługi wdrażania usług IIS i wszystko pod nim.

Zrzut ekranu przedstawiający okno dialogowe Konfiguracja programu Microsoft Web Deploy 4 dot 0. Architektura wdrażania sieci Web jest wyróżniona.

Wybierz przycisk Dalej , aby ukończyć pracę Kreatora. Po wprowadzeniu tej zmiany należy ponownie uruchomić usługę zarządzania siecią Web.

(401) Brak autoryzacji

Po poprawnym skonfigurowaniu narzędzia Web Deploy i usługi zarządzania siecią Web należy skonfigurować reguły delegowania, aby umożliwić użytkownikom aktualizowanie zawartości. W przypadku problemów z uprawnieniami w programie Visual Studio może wystąpić kilka różnych błędów. Na przykład:

Zrzut ekranu przedstawiający listę błędów w programie Visual Studio z wyświetlonymi błędami problemów z uprawnieniami.

Web deployment task failed.(Connected to the destination computer ("deployserver")
using the Web Management Service, but could not authorize.
Make sure that you are using the correct user name and password, that the site you are connecting
to exists, and that the credentials represent a user who has permissions to access the site.
Make sure the site name, user name, and password are correct. If the issue is not resolved,
please contact your local or server administrator.
Error details:
Connected to the destination computer ("deployserver") using the Web Management Service,
but could not authorize. Make sure that you are using the correct user name and password,
that the site you are connecting to exists, and that the credentials represent a user who
has permissions to access the site.
The remote server returned an error: (401) Unauthorized.

W dzienniku WMSvc jest wyświetlany następujący komunikat:

2011-05-12 15:50:12 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 - 192.168.0.203 - 401 2 5 1653
2011-05-12 15:50:12 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 user1 192.168.0.203 - 401 1 1326 124

Wyróżniony stan http w danych wyjściowych programu Visual Studio to błąd odmowy dostępu. Wyróżniony stan Win32 w dzienniku błędów jest mapowy na "Niepowodzenie logowania: nieznana nazwa użytkownika lub nieprawidłowe hasło", więc ten błąd jest prostym niepowodzeniem logowania. Jeśli użytkownik jest uwierzytelniony, ale nie ma praw potrzebnych do opublikowania, wpis dziennika wygląda następująco:

2011-05-12 15:55:38 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 - 192.168.0.203 - 401 2 5 0

Aby zezwolić temu użytkownikowi na publikowanie, należy skonfigurować delegowanie zgodnie z instrukcjami w temacie Konfigurowanie programu obsługi wdrażania sieci Web.

Operacja nie jest autoryzowana

Jeśli konto jest w stanie się zalogować, ale nie otrzymało uprawnień wymaganych do opublikowania zawartości, zostanie wyświetlony następujący komunikat o błędzie:

Zrzut ekranu przedstawiający stronę Lista błędów w programie Visual Studio z wyświetlonym błędem związanym z uprawnieniami użytkownika.

Web deployment task failed. (Unable to perform the operation ("Create Directory")  for the specified
directory ("bin"). This can occur if the server administrator has not authorized this operation for
the user credentials you are using.

Dziennik WMSvc zawiera odpowiedzi HTTP 200 dla tych żądań. Na szczęście narzędzie Web Deploy 2.1 zapisuje również informacje w dzienniku usługi Microsoft Web Deploy. Aby go wyświetlić, wybierz pozycję Podgląd zdarzeń (lokalne)>Aplikacje i usługi Dzienniki>microsoft Web Deploy.

Zrzut ekranu przedstawiający menu Podgląd zdarzeń. Wyróżniono pozycję Microsoft Web Deploy.

W przypadku tego konkretnego błędu dziennik zdarzeń zawiera dodatkowe szczegóły (obcięte w celu zwięzłości):

User: DEPLOYSERVER\User1
Client IP: 192.168.0.203
Content-Type: application/msdeploy
Version: 8.0.0.0
MSDeploy.VersionMin: 7.1.600.0
MSDeploy.VersionMax: 7.1.1070.1
MSDeploy.Method: Sync
MSDeploy.RequestId: 50de0746-f10d-4640-9b3d-4ba773520e38
MSDeploy.RequestCulture: en-US
MSDeploy.RequestUICulture: en-US
Skip: objectName="^configProtectedData$"
Provider: auto, Path: 
Tracing deployment agent exception. Request ID '50de0746-f10d-4640-9b3d-4ba773520e38'. Request Timestamp: '5/12/2011 9:18:12 AM'. Error Details:
Microsoft.Web.Deployment.DeploymentDetailedUnauthorizedAccessException: Unable to perform the operation ("Create Directory")
for the specified directory ("C:\inetpub\wwwroot\bin"). This can occur if the server administrator has not authorized this
operation for the user credentials you are using.
---> Microsoft.Web.Deployment.DeploymentException: The error code was 0x80070005. ---> System.UnauthorizedAccessException:
Access to the path 'C:\inetpub\wwwroot\bin' is denied.
   at Microsoft.Web.Deployment.Win32Native.RaiseIOExceptionFromErrorCode(Win32ErrorCode errorCode, String maybeFullPath)
   at Microsoft.Web.Deployment.DirectoryEx.CreateDirectory(String path)
   at Microsoft.Web.Deployment.DirPathProvider.CreateDirectory(String fullPath, DeploymentObject source)
   at Microsoft.Web.Deployment.DirPathProvider.Add(DeploymentObject source, Boolean whatIf)
   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---

Ten komunikat informuje, gdzie należy udzielić uprawnień dla tego konkretnego błędu. W programie Visual Studio może zostać również wyświetlony następujący błąd uprawnień:

Zrzut ekranu przedstawiający stronę Lista błędów w programie Visual Studio z błędem uprawnień w fokusie.

Web deployment task failed.((5/12/2011 11:31:41 AM) An error occurred when the request was processed on the remote computer.)

(5/12/2011 11:31:41 AM) An error occurred when the request was processed on the remote computer.
The server experienced an issue processing the request. Contact the server administrator for more information.

Ten konkretny błąd nie daje wiele do zrobienia, ale obraz staje się jaśniejszy, jeśli przyjrzysz się dziennikowi błędów narzędzia Web Deploy w Podgląd zdarzeń.

User: DEPLOYSERVER\User1
Client IP: 192.168.0.203
Content-Type: application/msdeploy
Version: 8.0.0.0
MSDeploy.VersionMin: 7.1.600.0
MSDeploy.VersionMax: 7.1.1070.1
MSDeploy.Method: Sync
MSDeploy.RequestId: 63b2f3d1-1817-444f-8280-9fa4f6f85d53
MSDeploy.RequestCulture: en-US
MSDeploy.RequestUICulture: en-US
Skip: objectName="^configProtectedData$"
Provider: auto, Path: 
Tracing deployment agent exception. Request ID '63b2f3d1-1817-444f-8280-9fa4f6f85d53'. Request Timestamp: '5/12/2011 9:31:41 AM'. Error Details:
System.UnauthorizedAccessException: Attempted to perform an unauthorized operation.
   at System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType type, String name, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner, SecurityIdentifier group, GenericAcl sacl, GenericAcl dacl)
   at System.Security.AccessControl.NativeObjectSecurity.Persist(String name, SafeHandle handle, AccessControlSections includeSections, Object exceptionContext)
   at System.Security.AccessControl.NativeObjectSecurity.Persist(String name, AccessControlSections includeSections, Object exceptionContext)
   at Microsoft.Web.Deployment.FileSystemSecurityEx.Persist(String path)
   at Microsoft.Web.Deployment.SetAclProvider.Add(DeploymentObject source, Boolean whatIf)
   at Microsoft.Web.Deployment.DeploymentObject.Update(DeploymentObject source, DeploymentSyncContext syncContext)
   at Microsoft.Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject, DeploymentObject sourceObject)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject)

Z tych danych wyjściowych widać, że User1 nie ma uprawnień do ustawiania informacji zabezpieczających. W takim przypadku użytkownik nie ma uprawnień do modyfikowania zawartości. Udzielenie "Zmień uprawnienia" do zawartości rozwiązuje problem.

Inne

Jeśli nie możesz przeglądać aplikacji .NET 4.0 po pomyślnym jej opublikowaniu, może to oznaczać, że platforma .NET 4.0 nie jest poprawnie zarejestrowana w usługach IIS. Inne objawy są takie, że jest zainstalowany program .NET 4.0, ale w usługach IIS nie ma pul aplikacji platformy .NET 4.0 ani mapowań programu obsługi. Ten objaw występuje, gdy program .NET 4.0 jest zainstalowany przed zainstalowaniem usług IIS. Aby rozwiązać ten problem, uruchom wiersz polecenia z podwyższonym poziomem uprawnień i uruchom następujące polecenie:

%systemdrive%\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -iru

Więcej informacji