Questo argomento non è stato ancora valutato - Valuta questo argomento

Risoluzione dei problemi relativi a Service Bus

Nelle sezioni riportate di seguito vengono descritti problemi che possono verificarsi quando si scrivono applicazioni per Service Bus di Windows Azure e viene illustrato come risolverli.

Risoluzione dei problemi relativi alle applicazioni Windows Azure

Nelle seguenti sezioni viene descritto come risolvere i problemi relativi alle applicazioni Windows Azure.

L'applicazione viene eseguita senza errori nell'infrastruttura di sviluppo, ma si arresta in modo anomalo quando viene distribuita

Sintomo

Un'applicazione di Service Bus viene eseguita senza errori nell'infrastruttura di sviluppo, ma si arresta in modo anomalo dopo essere stata distribuita nei server Windows Azure.

Causa

Gli assembly di Service Bus non sono attualmente integrati nella piattaforma Windows Azure. L'applicazione pertanto sta tentando di accedere a un assembly che non esiste nel server.

Soluzione

Aggiungere l'assembly di Service Bus al pacchetto di distribuzione, ad esempio impostare l'assembly su Copia locale. Sarà necessario pertanto aggiornare gli assembly manualmente.

Gli endpoint possono essere impostati a livello di codice, ma non funzionano se impostati nel file di configurazione

Sintomo

Un'applicazione funziona se gli endpoint vengono impostati a livello di codice, ma non funziona se le stesse impostazioni di configurazione vengono archiviate nel file App.config associato. L'applicazione genera il seguente errore:

System.Configuration.ConfigurationErrorsException: Impossibile trovare l'estensione di binding di configurazione 'system.serviceModel/bindings/netTcpRelayBinding'. Verificare che l'estensione di binding sia correttamente registrata in system.serviceModel/extensions/bindingExtensions e che sia digitata in modo corretto.

Causa

Gli assembly di Service Bus non sono attualmente integrati nella piattaforma Windows Azure. Se nel computer locale è installato Windows Azure SDK, il file Machine.config verrà modificato per aggiungere diverse estensioni di Windows Communication Foundation (WCF), ad esempio NetTcpRelayBinding. L'applicazione può quindi trovare le informazioni pertinenti nel file Machine.config, ad esempio nella sezione netTcpRelayBinding. Questo non si verifica nella piattaforma Windows Azure e pertanto l'applicazione non può trovare le informazioni pertinenti.

Soluzione

Per garantire il funzionamento della configurazione con Windows Azure, copiare le estensioni dal file Machine.config locale nel file App.config, altrimenti i tag come netTcpRelayBinding non verranno riconosciuti. Se tuttavia si esegue questa operazione, l'applicazione non potrà essere eseguita in locale per la presenza di estensioni duplicate. Sarà necessario pertanto mantenere due versioni del file App.config, una in locale e una per Windows Azure. È consigliabile eseguire questa attività specifica a livello di codice.

Problemi di connettività

Nei seguenti argomenti relativi alla risoluzione dei problemi sono contenute informazioni su come connettersi a Service Bus. Se non è disponibile la soluzione desiderata più avanti in questa sezione, prendere in considerazione una delle seguenti possibilità:

  • Eseguire una traccia di rete. È possibile infatti che la rete non sia attiva. Utilizzare Network Monitor per determinare lo stato della rete può rivelarsi utile per il debug del problema.

L'applicazione client non è in grado di trovare l'endpoint di destinazione

Sintomo

Quando si tenta di connettersi a Service Bus con un'applicazione client, si riceve il seguente errore:

Eccezione non gestita: System.ServiceModel.EndpointNotFoundException: Endpoint non trovato. Controllare che sia possibile connettersi a Internet utilizzando la porta HTTP 80 e la porta TCP 808.

Causa

Questo errore può dipendere da diverse cause.

Soluzione

  • Verificare che l'host sia in esecuzione, altrimenti non sarà presente alcun endpoint a cui connettersi. È possibile eseguire il servizio utilizzando una delle due procedure riportate di seguito:

    1. Modalità debug: fare clic con il pulsante destro del mouse sul progetto del servizio in Esplora soluzioni di Visual Studio, scegliere Debug, quindi Avvia nuova istanza. Dopo che il servizio si è avviato, ripetere la procedura per il client. Si noti che è possibile eseguire il debug del client anche se il servizio è già in esecuzione.

    2. Modalità di debug esterna: impostare il progetto del servizio come progetto di avvio. Scegliere Avvia senza eseguire debug dal menu Debug. In questo modo, anche se l'applicazione di servizio verrà eseguita, l'operazione non avrà effetto su Visual Studio. Dopo che il servizio si è avviato, impostare il progetto client come progetto di avvio, quindi eseguirlo.

  • Verificare di aver impostato la proprietà Copia localmente per l'assembly Microsoft.ServiceBus.dll (in Visual Studio) su true. Poiché nei server cloud non è installato Windows Azure SDK, è necessario includere l'assembly con il pacchetto. Senza di esso, il ruolo di lavoro non verrà eseguito correttamente.

  • Verificare che sia effettivamente possibile connettersi a Internet utilizzando la porta HTTP 80 e la porta TCP 808.

Il client non è in grado di completare la negoziazione di sicurezza entro il timeout configurato

Sintomo

L'applicazione non è in grado di connettersi a Service Bus e restituisce invece il seguente messaggio di errore:

"Il client non è in grado di completare la negoziazione di sicurezza entro il timeout configurato (00:01:00). La sezione corrente di negoziazione è 1 (00:00:59.9429968)".

Causa

È possibile che le credenziali di autenticazione non siano impostate correttamente.

Soluzione

Controllare che si stia autenticando il client. In particolare, controllare di aver impostato RelayClientAuthenticationType su None. Per impostazione predefinita, il valore è RelayAccessToken, che richiede che venga specificata un'attestazione per l'autenticazione, ad esempio una chiave privata condivisa. Se tuttavia si imposta manualmente il valore su None, il client non deve fornire alcuna autenticazione.

Se non è stato impostato il tipo di autenticazione, è probabile che l'enumerazione RelayClientAuthenticationType sia impostata sul valore predefinito RelayAccessToken. In questo caso, controllare che l'attestazione per l'autenticazione sia specificata correttamente. Per ulteriori informazioni, vedere Sicurezza e autenticazione di una connessione a Service Bus.

L'applicazione non è in grado di verificare la sicurezza quando si connette a Service Bus

Sintomo

Quando si tenta di connettersi a Service Bus, si riceve il seguente messaggio:

"Errore durante la verifica della sicurezza del messaggio"

Causa

È possibile che l'ora UTC del computer locale sia spostata in avanti rispetto all'ora UTC del server di Service Bus. Il timestamp dell'ora UTC locale ad esempio potrebbe essere 8.06 e nel server 8.05. Il server lo considera come un timestamp non valido e genera il messaggio di errore riportato nella sezione "Sintomo".

Soluzione

Verificare che l'ora UTC del computer locale sia corretta. Se necessario, spostare manualmente l'orologio indietro di alcuni minuti. Service Bus non considera i messaggi meno recenti come una violazione della sicurezza, contrariamente ai messaggi generati in una data spostata avanti nel tempo rispetto all'ora corrente.

Il feed ATOM non visualizza il servizio

Sintomo

Non è possibile individuare un servizio nel feed ATOM, anche se si è certi che il servizio sia in esecuzione.

Causa

In base al comportamento predefinito del Registro di sistema dei servizi, il servizio non viene esposto attraverso il feed ATOM.

Soluzione

Impostare l'endpoint come individuabile, come descritto in Procedura: pubblicare un servizio nel Registro di sistema di Service Bus.

Il documento è risultato utile?
(1500 caratteri rimanenti)

Aggiunte alla community

AGGIUNGI
© 2013 Microsoft. Tutti i diritti riservati.
facebook page visit twitter rss feed newsletter