Behandeln von Web Deploy-Problemen mit Visual Studio

Gilt für: Internetinformationsdienste

In diesem Artikel erfahren Sie, wie Sie eine Reihe von Fehlern beheben, wenn Sie versuchen, aus Visual Studio auf einem Server zu veröffentlichen, der nicht ordnungsgemäß über Web Deploy konfiguriert wurde. Obwohl der Artikel für bestimmte Produktversionen geschrieben ist, können die Konzepte auch auf neuere Versionen angewendet werden.

Verwenden Sie ein neues ASP.Net MVC 3-Projekt in Visual Studio 2010 SP1, um die folgenden Screenshots und Fehler zu erfassen. Der Zielserver war eine sauber Installation von Windows Server 2008 R2 SP1 mit Internetinformationsdienste (IIS). Es wurde keine andere Konfiguration durchgeführt.

Herstellen einer Verbindung mit dem Server nicht möglich

Der erste Fehler, auf den Sie wahrscheinlich stoßen, sieht wie im folgenden Screenshot im Ausgabefenster von Visual Studio aus. Um die Lesbarkeit zu verbessern, wird der vollständige Text der Nachricht unter dem Screenshot bereitgestellt:

Screenshot: Ausgabe der Fehlerliste in 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 1.1.1.1:8172

Der in diesem Fehler hervorgehobene Text (und die anderen fehler unten) ist der Schlüssel zum Verständnis der Art des Problems. Web Deploy hat keine Antwort vom Server erhalten, sodass Visual Studio nicht zwischen mehreren möglichen Ursachen unterscheiden kann. Als Ergebnis wird eine Liste von Dingen angezeigt, die Sie ausprobieren können.

Ist der Webverwaltungsdienst installiert?

Öffnen Sie auf dem IIS-Server den Internetinformationsdienste-Manager, und wählen Sie den Knoten Computername aus. Scrollen Sie in der Ansicht Features nach unten zum Abschnitt Verwaltung , und suchen Sie nach den folgenden Symbolen:

Screenshot: Iis-Manager-Berechtigungssymbol, IIS-Manager-Benutzersymbol und Verwaltungsdienstsymbol

Wenn sie nicht vorhanden sind, müssen Sie den Verwaltungsdienst über das Dialogfeld Rollendienste hinzufügen installieren. Es kann auch über den Webplattform-Installer auf der Registerkarte Produkte installiert werden. Wählen Sie in der linken Spalte Server und dann IIS: Verwaltungsdienst aus.

Hinweis

Nachdem Sie den Verwaltungsdienst installiert haben, müssen Sie ihn starten, da er nicht automatisch gestartet wird. Doppelklicken Sie dazu auf das Symbol "Verwaltungsdienst ". Nachdem der Bereich Verwaltungsdienst angezeigt wird, wählen Sie im Bereich Aktionen auf der rechten Seite starten aus.

Ist die Dienst-URL korrekt?

Standardmäßig lauscht der Webverwaltungsdienst an Port 8172, dies kann jedoch geändert werden. Am einfachsten können Sie überprüfen, welcher Port verwendet wird, wenn Sie den Verwaltungsdienstbereich wie oben beschrieben öffnen und sich die IP- und Portinformationen im Abschnitt Connections ansehen. Wenn der Port in einen anderen Port als 8172 geändert wurde, müssen Sie sicherstellen, dass der neue Port über die Firewall zugelassen wird, und die Dienst-URL in den Veröffentlichungseinstellungen von Visual Studio aktualisieren, um den neuen Port zu verwenden.

(403) Verboten

Nachdem der Webverwaltungsdienst installiert wurde, zeigt Visual Studio möglicherweise den folgenden Fehler an:

Screenshot: Bildschirm

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.

Diese Meldung ist etwas irreführend. Es wird angegeben, dass der Server nicht geantwortet hat, aber der Fehler 403 gibt an, dass Web Deploy den Server kontaktieren konnte, aber die Anforderung wurde aktiv abgelehnt. Das HTTP-Protokoll für den Webverwaltungsdienst kann dabei helfen, zu bestätigen, dass die Anforderung den Server erreicht hat, und Details zu der tatsächlichen Anforderung angeben, bei der ein Fehler aufgetreten ist. Dieses Protokoll ist standardmäßig unter %SystemDrive%\Inetpub\logs\WMSvc zu finden. Wie andere IIS-Protokolle werden Daten nicht sofort in das Protokoll geschrieben, sodass Sie möglicherweise einige Minuten warten müssen, bis die Anforderung angezeigt wird, oder den Webverwaltungsdienst neu starten, um das Protokoll zu leeren.

Im WMSVC Protokoll sieht der oben genannte Fehler wie folgt aus:

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

Der 6 nach dem 403 im Protokoll ist der Unter-status Code und bedeutet, dass die IP-Adresse abgelehnt wurde. Eine vollständige Liste der status- und Unter-status-Codes für IIS finden Sie unter HTTP-status-Codes in IIS.

Ist der Verwaltungsdienst so konfiguriert, dass Remoteverbindungen zulässig sind?

Dies ist der wahrscheinlichste Grund für die Antwort 403.6. Doppelklicken Sie auf das Symbol "Verwaltungsdienst", und überprüfen Sie, ob Remote-Connections aktivieren aktiviert ist. Sie müssen den Dienst beenden, um Änderungen vorzunehmen. Stellen Sie daher sicher, dass Sie ihn neu starten, wenn Sie fertig sind.

Screenshot: Dialogfeld

Wurde der Webverwaltungsdienst über die Windows-Firewall zugelassen?

Wenn Sie den Webverwaltungsdienst auf dem Server installieren, wird eine Eingehende Firewallregel mit dem Namen Web Management Service (HTTP Traffic-In) bezeichnet. Überprüfen Sie, ob diese Regel aktiviert ist, indem Sie zuVerwaltungtools>Windows-Firewall mit erweiterter Sicherheitstarten> wechseln. Wählen Sie Eingehende Regeln aus, und suchen Sie in der Liste nach der Webverwaltungsregel . Es sollte für alle Profile aktiviert sein.

Wenn Sie eine Firewall eines Drittanbieters verwenden, müssen Sie sicherstellen, dass eingehende Verbindungen an Port 8172 zulässig sind.

Wurden IP-Einschränkungen für den Verwaltungsdienst konfiguriert?

Der andere häufige Grund für den Fehler 403 ist, wenn der Verwaltungsdienst so konfiguriert wurde, dass die IP-Adresse des Clients verweigert wird. Standardmäßig ist es so konfiguriert, dass alle IP-Adressen zugelassen werden, solange Remoteverbindungen zulässig sind. Sie können nach IP-Einschränkungen suchen, indem Sie auf das Symbol "Verwaltungsdienst " doppelklicken. Alle konfigurierten IP-Einschränkungsregeln befinden sich unten auf der Seite in den IPv4-Adresseinschränkungen.

(404) Nicht gefunden

Screenshot: Seite

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.

Der Fehler 404 gibt an, dass Web Deploy den Webverwaltungsdienst auf dem Server kontaktieren konnte, aber nicht das benötigte Gefunden hat. Zunächst müssen Sie überprüfen, mit welcher Ressource Web Deploy versucht hat, eine Verbindung herzustellen. Wenn Sie im Protokoll des Webverwaltungsdiensts unter %SystemDrive%\Inetpub\logs\WMSvc auf dem Zielserver nachsehen, wird ein Eintrag im Protokoll angezeigt, der WMSVC wie folgt aussieht:

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 ist der Handler für Web Deploy-Anforderungen.

Ist Web Deploy installiert?

Sie können überprüfen, ob Web Deploy installiert ist, indem Sie in der Systemsteuerung Programme und Features nach Microsoft Web Deploy 2.0 in der Liste der installierten Programme suchen. Wenn es nicht vorhanden ist, können Sie es über den Webplattform-Installer installieren, indem Sie zur Registerkarte Produkte wechseln. Es ist als Webbereitstellungstool 2.1 aufgeführt. Sie sollten auch sicherstellen, dass der Web Deployment Agent-Dienst (MsDepSvc) ausgeführt wird.

Ist der Webbereitstellungshandler installiert?

Wenn Web Deploy installiert ist und dieser Fehler weiterhin angezeigt wird, stellen Sie sicher, dass das feature IIS 7 Deployment Handler in Web Deploy installiert ist. Suchen Sie in der Systemsteuerung Programme und Featuresnach Microsoft Web Deploy 2.0, klicken Sie mit der rechten Maustaste, und wählen Sie Ändern aus. Wählen Sie im daraufhin angezeigten Assistenten auf der ersten Seite Weiter und dann auf der zweiten Seite Ändern aus. Fügen Sie IIS 7 Deployment Handler und alles darunter hinzu.

Screenshot: Dialogfeld

Wählen Sie Weiter aus, um den Assistenten abzuschließen. Sie müssen den Webverwaltungsdienst neu starten, nachdem Sie diese Änderung vorgenommen haben.

(401) Nicht autorisiert

Sobald Web Deploy und der Webverwaltungsdienst ordnungsgemäß konfiguriert sind, müssen Sie Delegierungsregeln einrichten, damit Benutzer Inhalte aktualisieren können. Bei Berechtigungsproblemen gibt es verschiedene Fehler, die in Visual Studio angezeigt werden können. Zum Beispiel:

Screenshot: Fehlerliste in Visual Studio mit Berechtigungsproblemfehlern

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.

Im WMSvc-Protokoll wird die folgende Meldung angezeigt:

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

Der hervorgehobene HTTP-status in der Visual Studio-Ausgabe ist ein Fehler vom Typ Zugriff verweigert. Die hervorgehobene win32-status im Fehlerprotokoll wird "Anmeldefehler: unbekannter Benutzername oder ungültiges Kennwort" zugeordnet, sodass dies ein einfacher Anmeldefehler ist. Wenn der Benutzer authentifiziert ist, aber nicht über die zum Veröffentlichen erforderlichen Rechte verfügt, sieht der Protokolleintrag wie folgt aus:

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

Damit dieser Benutzer veröffentlichen kann, müssen Sie die Delegierung gemäß den Anweisungen unter Konfigurieren des Webbereitstellungshandlers einrichten.

Vorgang nicht autorisiert

Wenn sich das Konto anmelden kann, aber nicht die zum Veröffentlichen des Inhalts erforderlichen Rechte erhalten hat, wird die folgende Fehlermeldung angezeigt:

Screenshot: Seite

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.

Das WMSvc Protokoll zeigt HTTP 200-Antworten für diese Anforderungen an. Glücklicherweise schreibt Web Deploy 2.1 auch Informationen in das Microsoft Web Deploy-Dienstprotokoll. Wählen Sie zum Anzeigen Ereignisanzeige (Lokal)>Anwendungs- und Dienstprotokolle>Microsoft Web Deploy aus.

Screenshot: Menü

Für diesen bestimmten Fehler enthält das Ereignisprotokoll zusätzliche Details (aus Gründen der Kürze abgeschnitten):

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 ---

In dieser Meldung erfahren Sie, wo Berechtigungen für diesen bestimmten Fehler erteilt werden müssen. Möglicherweise wird auch der folgende Berechtigungsfehler in Visual Studio angezeigt:

Screenshot: Seite

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.

Dieser bestimmte Fehler gibt Ihnen nicht viel, aber das Bild wird klarer, wenn Sie sich das Web Deploy-Fehlerprotokoll in Ereignisanzeige ansehen.

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)

Aus dieser Ausgabe sehen wir, dass User1 nicht über die Berechtigungen zum Festlegen von Sicherheitsinformationen verfügt. In diesem Fall verfügt der Benutzer nicht über "Ändern"-Berechtigungen für den Inhalt. Das Erteilen von "Berechtigungen ändern" für den Inhalt löst das Problem.

Sonstige

Wenn Sie eine .NET 4.0-Anwendung nach der erfolgreichen Veröffentlichung nicht durchsuchen können, kann es sein, dass .NET 4.0 nicht ordnungsgemäß bei IIS registriert wurde. Weitere Symptome sind, dass .NET 4.0 installiert ist, aber keine .NET 4.0-Anwendungspools oder Handlerzuordnungen in IIS vorhanden sind. Dies geschieht, wenn .NET 4.0 installiert wird, bevor IIS installiert wird. Um dieses Problem zu beheben, starten Sie eine Eingabeaufforderung mit erhöhten Rechten, und führen Sie den folgenden Befehl aus:

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

Weitere Informationen