Esporta (0) Stampa
Espandi tutto

Risoluzione dei problemi relativi a Service Bus

Aggiornamento: giugno 2014

Le seguenti sezioni descrivono i problemi che possono verificarsi quando si scrivono applicazioni per Service Bus di Microsoft Azure e illustrano come risolverli.

Le seguenti sezioni descrivono come risolvere i problemi relativi alle applicazioni di Service Bus.

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 .

Causa

Gli assembly di Service Bus non sono attualmente integrati nella piattaforma . 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.

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 . Se nel computer locale è installato 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 e pertanto l'applicazione non può trovare le informazioni pertinenti.

Soluzione

Per garantire il funzionamento della configurazione con , 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 . È consigliabile eseguire questa attività specifica a livello di codice.

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. Usare Network Monitor per determinare lo stato della rete può rivelarsi utile per il debug del problema.

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 usando 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 usando 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 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 usando la porta HTTP 80 e la porta TCP 808.

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 altre informazioni, vedere Sicurezza e autenticazione di una connessione 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.

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 in modo che sia individuabile, come descritto in Procedura: Pubblicare un servizio nel Registro di sistema di Service Bus.

Mostra:
© 2014 Microsoft