Condividi tramite


Risolvere i problemi di distribuzione Web con Visual Studio

Si applica a: Internet Information Services

Questo articolo illustra come risolvere una serie di errori durante il tentativo di pubblicazione da Visual Studio a un server non configurato correttamente tramite Distribuzione Web. Anche se l'articolo è scritto per versioni specifiche del prodotto, i concetti possono essere applicati anche alle versioni più recenti.

Per raccogliere gli screenshot e gli errori seguenti, usare un nuovo progetto MVC ASP.NET in Visual Studio. Il server di destinazione era un'installazione pulita di Windows Server con Internet Information Services (IIS). Nessun'altra configurazione è stata eseguita.

Impossibile connettersi al server

Il primo errore che si verifica probabilmente è simile allo screenshot seguente nella finestra di output di Visual Studio. Per migliorare la leggibilità, il testo completo del messaggio viene fornito nello screenshot:

Screenshot che mostra l'output elenco errori 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

Il testo evidenziato in questo errore (e gli altri errori nelle sezioni seguenti) è la chiave per comprendere la natura del problema. Distribuzione Web non ha ottenuto una risposta dal server, quindi Visual Studio non è in grado di distinguere tra diverse possibili cause. Di conseguenza, fornisce un elenco di cose da provare.

Il servizio di gestione Web è installato?

Nel server IIS aprire Gestione Internet Information Services (IIS) e selezionare il nodo del nome del computer. Nella visualizzazione Funzionalità scorrere verso il basso fino alla sezione Gestione e cercare queste icone:

Screenshot che mostra l'icona Autorizzazioni di Gestione IIS, l'icona Utenti di Gestione IIS e l'icona del servizio di gestione.

In caso contrario, è necessario installare il servizio di gestione tramite la finestra di dialogo Aggiungi servizi ruolo. Può essere installato anche tramite Il programma di installazione della piattaforma Web dalla scheda Prodotti . Selezionare Server nella colonna sinistra e selezionare IIS: Servizio di gestione.

Note

Dopo aver installato il servizio di gestione, è necessario avviarlo, perché non viene avviato automaticamente. A tale scopo, fare doppio clic sull'icona del servizio di gestione. Dopo aver visualizzato il riquadro Servizio di gestione, selezionare Avvia nel riquadro Azioni a destra.

L'URL del servizio è corretto?

Per impostazione predefinita, il servizio gestione Web è in ascolto sulla porta 8172, ma questa impostazione può essere modificata. Il modo più semplice per controllare la porta usata consiste nell'aprire il riquadro Servizio di gestione come descritto in precedenza e esaminare le informazioni sull'INDIRIZZO IP e sulla porta nella sezione Connessioni. Se la porta è stata modificata in un valore diverso da 8172, è necessario assicurarsi che la nuova porta sia consentita tramite il firewall e aggiornare l'URL del servizio nelle impostazioni di pubblicazione di Visual Studio per usare la nuova porta.

(403) Accesso negato

Dopo aver installato il servizio di gestione Web, Visual Studio potrebbe visualizzare l'errore seguente:

Screenshot che mostra la schermata Elenco errori 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.

Questo messaggio è fuorviante. Indica che il server non ha risposto, ma l'errore 403 indica che Distribuzione Web potrebbe contattare il server, ma la richiesta è stata rifiutata attivamente. Il log HTTP per il servizio di gestione Web può essere utile per confermare che la richiesta è stata raggiunta dal server e fornire informazioni dettagliate sulla richiesta effettiva non riuscita. Questo log è disponibile per %SystemDrive%\Inetpub\logs\WMSvc impostazione predefinita. Analogamente ad altri log IIS, i dati non vengono scritti immediatamente nel log, quindi potrebbe essere necessario attendere un paio di minuti per visualizzare la richiesta o riavviare il servizio di gestione Web per scaricare il log.

WMSVC Nel log è possibile visualizzare il messaggio seguente:

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

L'oggetto 6403 dopo nel log è il codice di stato secondario e indica che l'indirizzo IP è stato rifiutato. Un elenco completo dei codici di stato e di stato secondario per IIS è disponibile in Codici di stato HTTP in IIS.

Il servizio di gestione è configurato per consentire le connessioni remote?

Questo è il motivo più probabile per la risposta 403.6. Fare doppio clic sull'icona servizio di gestione e verificare che l'opzione Abilita connessioni remote sia selezionata. È necessario arrestare il servizio per apportare modifiche, quindi assicurarsi di riavviarlo al termine.

Screenshot che mostra la finestra di dialogo Servizio di gestione.

Il servizio di gestione Web è stato consentito tramite Windows Firewall?

Quando si installa il servizio gestione Web nel server, una regola del firewall in ingresso è denominata Servizio di gestione Web (traffico HTTP). Verificare che questa regola sia abilitata passando a Start AdministrativeTools>Windows Firewall with Advanced Security (Avvia>strumenti amministrativi windows Firewall con sicurezza avanzata). Selezionare Regole in ingresso e trovare la regola gestione Web nell'elenco. Deve essere abilitato per tutti i profili.

Se si usa un firewall di terze parti, è necessario assicurarsi che le connessioni in ingresso sulla porta 8172 siano consentite.

Sono state configurate restrizioni IP per il servizio di gestione?

L'altro motivo comune per cui è possibile ottenere un errore 403 è che il servizio di gestione è stato configurato per negare l'INDIRIZZO IP del client. Per impostazione predefinita, è configurato per consentire tutti gli INDIRIZZI IP, purché siano consentite le connessioni remote. Per verificare la presenza di restrizioni IP, fare doppio clic sull'icona del servizio di gestione. Tutte le regole di restrizione IP configurate si trovano nella parte inferiore della pagina nelle restrizioni degli indirizzi IPv4.

(404) Non trovato

Screenshot che mostra la pagina Elenco errori in Visual Studio. I dettagli degli errori sono attivati.

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.

L'errore 404 indica che Distribuzione Web è stata in grado di contattare il servizio di gestione Web nel server, ma non è riuscito a trovare le informazioni necessarie. La prima cosa da fare è verificare a quale risorsa Distribuzione Web ha tentato di connettersi. Se si esamina il log del servizio gestione Web in %SystemDrive%\Inetpub\logs\WMSvc nel server di destinazione, viene visualizzata una voce nel WMSVC log simile alla seguente:

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 è il gestore per le richieste di distribuzione Web.

Distribuzione Web è installata?

È possibile verificare che Distribuzione Web sia installata accedendo al pannello di controllo Programmi e funzionalità e cercando Microsoft Web Deploy 4.0 nell'elenco dei programmi installati. In caso contrario, è possibile scaricarlo e installarlo dalla pagina di download ufficiale. È anche necessario assicurarsi che il servizio agente di distribuzione Web (MsDepSvc) sia in esecuzione.

Il gestore di distribuzione Web è installato?

Se distribuzione Web è installata e viene comunque visualizzato questo errore, assicurarsi che la funzionalità Gestore distribuzione IIS in Distribuzione Web sia installata. Nel pannello di controllo Programmi e funzionalità trovare Microsoft Web Deploy 4.0, fare clic con il pulsante destro del mouse e scegliere Cambia. Nella procedura guidata visualizzata selezionare Avanti nella prima pagina e quindi selezionare Cambia nella seconda pagina. Aggiungere il gestore di distribuzione IIS e tutti gli elementi sottostanti.

Screenshot che mostra la finestra di dialogo Installazione di Microsoft Web Deploy 4 dot 0. Framework distribuzione Web è evidenziato.

Selezionare Avanti per completare la procedura guidata. È necessario riavviare il servizio di gestione Web dopo aver apportato questa modifica.

(401) Non autorizzato

Dopo la configurazione corretta della distribuzione Web e del servizio di gestione Web, è necessario configurare le regole di delega per consentire agli utenti di aggiornare il contenuto. Per i problemi relativi alle autorizzazioni, potrebbero verificarsi diversi errori in Visual Studio. Ad esempio:

Screenshot che mostra l'elenco errori in Visual Studio che mostra gli errori relativi al problema di autorizzazione.

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.

Nel log WMSvc è possibile visualizzare il messaggio seguente:

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

Lo stato HTTP evidenziato nell'output di Visual Studio è un errore accesso negato. Lo stato Win32 evidenziato nel log degli errori è mappato a "Errore di accesso: nome utente sconosciuto o password non valida", quindi questo errore è un semplice errore di accesso. Se l'utente è autenticato ma non dispone dei diritti necessari per la pubblicazione, la voce di log è simile alla seguente:

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

Per consentire la pubblicazione di questo utente, è necessario configurare la delega in base alle istruzioni in Configurare il gestore della distribuzione Web.

Operazione non autorizzata

Se l'account è in grado di accedere ma non ha concesso i diritti necessari per pubblicare il contenuto, viene visualizzato il messaggio di errore seguente:

Screenshot che mostra la pagina Elenco errori in Visual Studio che mostra un errore correlato alle autorizzazioni utente.

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.

Il WMSvc log mostra le risposte HTTP 200 per queste richieste. Fortunatamente, Web Deploy 2.1 scrive anche le informazioni nel log del servizio Distribuzione Web Microsoft. Per visualizzarla, selezionare Visualizzatore eventi (locale)>Applicazioni e servizi Registri>distribuzione Web Microsoft.

Screenshot che mostra il menu Visualizzatore eventi. Distribuzione Web Microsoft è evidenziato.

Per questo particolare errore, il registro eventi contiene dettagli aggiuntivi (troncati per brevità):

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

Questo messaggio indica dove devono essere concesse le autorizzazioni per questo particolare errore. È anche possibile che venga visualizzato l'errore di autorizzazioni seguente in Visual Studio:

Screenshot che mostra la pagina Elenco errori in Visual Studio con un errore di autorizzazione con stato attivo.

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.

Questo particolare errore non offre molto da continuare, ma l'immagine diventa più chiara se si esamina il log degli errori distribuzione Web nel Visualizzatore eventi.

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)

Da questo output è possibile notare che User1 non dispone dei diritti per impostare le informazioni di sicurezza. In questo caso, l'utente non ha "Autorizzazioni di modifica" per il contenuto. La concessione di "Modifica autorizzazioni" al contenuto risolve il problema.

Altri

Se non è possibile esplorare un'applicazione .NET 4.0 dopo averla pubblicata correttamente, è possibile che .NET 4.0 non sia registrato correttamente con IIS. Altri sintomi sono che .NET 4.0 è installato, ma non sono presenti pool di applicazioni .NET 4.0 o mapping di gestori in IIS. Questo sintomo si verifica quando .NET 4.0 viene installato prima dell'installazione di IIS. Per risolvere il problema, avviare un prompt dei comandi con privilegi elevati ed eseguire il comando seguente:

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

Ulteriori informazioni