Delen via


Problemen met Web Deploy met Visual Studio oplossen

Van toepassing op: Internet Information Services

Dit artikel helpt u bij het oplossen van een reeks fouten bij het publiceren van Visual Studio naar een server die niet correct is geconfigureerd via Web Deploy. Hoewel het artikel is geschreven voor specifieke productversies, kunnen de concepten ook worden toegepast op nieuwere versies.

Als u de volgende schermopnamen en fouten wilt verzamelen, gebruikt u een nieuw ASP.NET MVC-project in Visual Studio. De doelserver was een schone installatie van Windows Server met Internet Information Services (IIS). Er is geen andere configuratie uitgevoerd.

Kan geen verbinding maken met de server

De eerste fout die u waarschijnlijk tegenkomt, ziet er ongeveer als volgt uit in het uitvoervenster van Visual Studio. Voor een betere leesbaarheid wordt de volledige tekst van het bericht weergegeven onder de schermafbeelding:

Schermopname van de uitvoer van de foutenlijst 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 192.168.0.211:8172

De tekst die in deze fout is gemarkeerd (en de andere fouten in de volgende secties) is de sleutel om inzicht te krijgen in de aard van het probleem. Web Deploy heeft geen antwoord ontvangen van de server, zodat Visual Studio geen onderscheid kan maken tussen verschillende mogelijke oorzaken. Als gevolg hiervan krijgt u een lijst met dingen die u kunt proberen.

Is de webbeheerservice geïnstalleerd?

Open Internet Information Services (IIS) Manager op de IIS-server en selecteer het computernaamknooppunt. Schuif in de weergave Functies omlaag naar de sectie Beheer en zoek naar deze pictogrammen:

Schermopname van het pictogram Machtigingen voor IIS-beheer, het pictogram Gebruikers van IIS-beheer en het pictogram Beheerservice.

Als deze er niet zijn, moet u de beheerservice installeren via het dialoogvenster Functieservices toevoegen. Het kan ook worden geïnstalleerd via het webplatforminstallatieprogramma op het tabblad Producten . Selecteer Server in de linkerkolom en selecteer IIS: Beheerservice.

Notitie

Nadat u de beheerservice hebt geïnstalleerd, moet u deze starten, omdat deze niet automatisch wordt gestart. Dubbelklik hiervoor op het pictogram Beheerservice . Nadat het deelvenster Beheerservice is weergegeven, selecteert u Starten in het deelvenster Acties aan de rechterkant.

Is de service-URL juist?

De webbeheerservice luistert standaard op poort 8172, maar deze instelling kan worden gewijzigd. De eenvoudigste manier om te controleren welke poort wordt gebruikt, is door het deelvenster Beheerservice te openen zoals eerder is beschreven en bekijk de IP- en poortgegevens in de sectie Verbindingen. Als de poort is gewijzigd in iets anders dan 8172, moet u ervoor zorgen dat de nieuwe poort is toegestaan via de firewall en de service-URL bijwerken in de publicatie-instellingen van Visual Studio om de nieuwe poort te gebruiken.

(403) Verboden

Zodra de webbeheerservice is geïnstalleerd, kan Visual Studio de volgende fout weergeven:

Schermopname van het scherm Foutenlijst in 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.

Dit bericht is misleidend. Er wordt aangegeven dat de server niet heeft gereageerd, maar de 403-fout geeft aan dat Web Deploy contact kan opnemen met de server, maar dat de aanvraag actief is geweigerd. Het HTTP-logboek voor de webbeheerservice kan helpen bevestigen dat de aanvraag de server heeft bereikt en details opgeven over de werkelijke aanvraag die is mislukt. Dit logboek is standaard te vinden %SystemDrive%\Inetpub\logs\WMSvc . Net als andere IIS-logboeken worden gegevens niet onmiddellijk naar het logboek geschreven, dus u moet mogelijk een paar minuten wachten om de aanvraag te zien of de webbeheerservice opnieuw te starten om het logboek leeg te maken.

In het WMSVC logboek ziet u het volgende bericht:

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

De 6 na het 403 logboek is de substatuscode en betekent dat het IP-adres is geweigerd. Een volledige lijst met de status- en substatuscodes voor IIS vindt u in HTTP-statuscodes in IIS.

Is de beheerservice geconfigureerd om externe verbindingen toe te staan?

Dit is de meest waarschijnlijke reden voor het 403.6-antwoord. Dubbelklik op het pictogram Beheerservice en controleer of Externe verbindingen inschakelen is ingeschakeld. U moet de service stoppen om wijzigingen aan te brengen, dus start deze opnieuw wanneer u klaar bent.

Schermopname van het dialoogvenster Beheerservice.

Is de webbeheerservice toegestaan via Windows Firewall?

Wanneer u de webbeheerservice op de server installeert, krijgt een binnenkomende firewallregel de naam Web Management Service (HTTP Traffic-In). Controleer of deze regel is ingeschakeld door te gaan naar Start>AdministrativeTools>Windows Firewall met Geavanceerde beveiliging. Selecteer Regels voor inkomend verkeer en zoek de regel voor webbeheer in de lijst. Deze moet zijn ingeschakeld voor alle profielen.

Als u een firewall van derden gebruikt, moet u ervoor zorgen dat binnenkomende verbindingen op poort 8172 zijn toegestaan.

Zijn IP-beperkingen geconfigureerd voor de beheerservice?

De andere veelvoorkomende reden dat u een 403-fout kunt krijgen, is dat de beheerservice is geconfigureerd om het IP-adres van de client te weigeren. Standaard is het zo geconfigureerd dat alle IP-adressen zijn toegestaan zolang externe verbindingen zijn toegestaan. U kunt controleren op IP-beperkingen door te dubbelklikken op het pictogram Beheerservice . Geconfigureerde IP-beperkingsregels bevinden zich onder aan de pagina in de IPv4-adresbeperkingen.

(404) Niet gevonden

Schermopname van de pagina Foutenlijst in Visual Studio. Foutdetails bevinden zich in de focus.

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.

De 404-fout geeft aan dat Web Deploy contact kon opnemen met de webbeheerservice op de server, maar niet kon vinden wat er nodig was. Het eerste wat u moet doen, is te bevestigen met welke resource Web Deploy verbinding probeert te maken. Als u het logboek van de webbeheerservice bekijkt onder %SystemDrive%\Inetpub\logs\WMSvc op de doelserver, ziet u een vermelding in het WMSVC logboek dat er als volgt uitziet:

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 is de handler voor Web Deploy-aanvragen.

Is Web Deploy geïnstalleerd?

U kunt controleren of Web Deploy is geïnstalleerd door naar het configuratiescherm Programma's en onderdelen te gaan en te zoeken naar Microsoft Web Deploy 4.0 in de lijst met geïnstalleerde programma's. Als deze niet aanwezig is, kunt u het downloaden en installeren vanaf de officiële downloadpagina. Zorg er ook voor dat de webimplementatieagentservice (MsDepSvc) wordt uitgevoerd.

Is de webimplementatiehandler geïnstalleerd?

Als Web Deploy is geïnstalleerd en deze fout nog steeds wordt weergegeven, controleert u of de functie IIS-implementatiehandler in Web Deploy is geïnstalleerd. Zoek in het configuratiescherm Programma's en onderdelen Microsoft Web Deploy 4.0, klik er met de rechtermuisknop op en selecteer Wijzigen. Selecteer Volgende op de eerste pagina in de wizard die wordt weergegeven en selecteer vervolgens Wijzigen op de tweede pagina. Voeg iis-implementatiehandler en alles eronder toe.

Schermopname van het dialoogvenster Microsoft Web Deploy 4 dot 0 Setup. Web Deployment Framework is gemarkeerd.

Selecteer Volgende om de wizard te voltooien. U moet de webbeheerservice opnieuw starten nadat u deze wijziging hebt aangebracht.

(401) Niet geautoriseerd

Zodra Web Deploy en de Web Management Service correct zijn geconfigureerd, moet u delegeringsregels instellen om gebruikers toe te staan inhoud bij te werken. Voor problemen met machtigingen zijn er verschillende fouten die u in Visual Studio kunt zien. Bijvoorbeeld:

Schermopname van de foutenlijst in Visual Studio met fouten bij machtigingsproblemen.

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.

In het WMSvc-logboek ziet u het volgende bericht:

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

De gemarkeerde HTTP-status in de Visual Studio-uitvoer is een fout met geweigerde toegang. De gemarkeerde Win32-status in het foutenlogboek wordt toegewezen aan 'Aanmeldingsfout: onbekende gebruikersnaam of ongeldig wachtwoord', dus deze fout is een eenvoudige aanmeldingsfout. Als de gebruiker is geverifieerd, maar niet over de benodigde rechten beschikt om te publiceren, ziet de logboekvermelding er als volgt uit:

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

Als u wilt toestaan dat deze gebruiker publiceert, moet u delegering instellen volgens de instructies bij De webimplementatiehandler configureren.

Bewerking is niet geautoriseerd

Als het account zich kan aanmelden, maar niet de rechten heeft gekregen die nodig zijn om de inhoud te publiceren, ziet u het volgende foutbericht:

Schermopname van de pagina Foutenlijst in Visual Studio met een fout met betrekking tot gebruikersmachtigingen.

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.

In WMSvc het logboek worden HTTP 200-antwoorden voor deze aanvragen weergegeven. Gelukkig schrijft Web Deploy 2.1 ook informatie naar het logboek van de Microsoft Web Deploy-service. Als u deze wilt weergeven, selecteert u Logboeken (lokale)>toepassingen en serviceslogboeken van>Microsoft Web Deploy.

Schermopname van het menu Logboeken. Microsoft Web Deploy is gemarkeerd.

Voor deze specifieke fout bevat het gebeurtenislogboek extra details (afgekapt voor beknoptheid):

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

Dit bericht geeft aan waar machtigingen moeten worden verleend voor deze specifieke fout. Mogelijk ziet u ook de volgende machtigingsfout in Visual Studio:

Schermopname van de pagina Foutenlijst in Visual Studio met een machtigingsfout in focus.

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.

Deze specifieke fout geeft u niet veel om door te gaan, maar de afbeelding wordt duidelijker als u kijkt naar het foutenlogboek web implementeren in de Logboeken.

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)

In deze uitvoer zien we dat User1 er geen rechten zijn om beveiligingsgegevens in te stellen. In dit geval heeft de gebruiker geen 'Machtigingen wijzigen' voor de inhoud. Als u 'Wijzigingsmachtigingen' aan de inhoud verleent, wordt het probleem opgelost.

Overige

Als u niet door een .NET 4.0-toepassing kunt bladeren nadat u deze hebt gepubliceerd, kan het zijn dat .NET 4.0 niet correct is geregistreerd bij IIS. Andere symptomen zijn dat .NET 4.0 is geïnstalleerd, maar er zijn geen .NET 4.0-toepassingsgroepen of handlertoewijzingen in IIS. Dit symptoom treedt op wanneer .NET 4.0 wordt geïnstalleerd voordat IIS wordt geïnstalleerd. U kunt dit probleem oplossen door een opdrachtprompt met verhoogde bevoegdheid te starten en de volgende opdracht uit te voeren:

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

Meer informatie