Condividi tramite


Risoluzione dei problemi e debug delle connessioni di rete (app di Windows Runtime)

[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]

I problemi di rete possono causare l'arresto o il blocco delle applicazioni oppure mostrare agli utenti finestre di dialogo con cui è impossibile interagire o messaggi di errore capaci solo di creare confusione. La risoluzione e il debug di questi errori possono essere difficili, poiché gli errori possono verificarsi ovunque nello stack di rete.

Applicazioni interessate

Tutte le app di Windows Runtime che usano la rete direttamente (ad esempio mediante socket) o indirettamente (mediante un'API che usa la rete) sono potenzialmente interessate dai problemi di rete. La situazione ideale è quella in cui il sistema operativo è in grado di gestire automaticamente le condizioni di errore della rete da parte dell'applicazione e in cui, quando ciò non è possibile, le applicazioni sono preparate a gestire gli errori.

Scelta della funzionalità di rete appropriata

Per consentire a un'app di Windows Runtime di accedere alla rete, è necessario abilitare determinate funzionalità di isolamento di rete nel manifesto dell'app. Queste funzionalità in genere vengono configurate in Microsoft Visual Studio 2013 durante lo sviluppo dell'app. Queste funzionalità vengono applicate da Windows. Se non si impostano le funzionalità di rete appropriate, l'accesso alla rete potrebbe venire bloccato.

Pertanto, il primo passo nella risoluzione dei problemi di rete consiste nel verificare che le funzionalità di rete appropriate siano state configurate per l'app.

Funzionalità di rete Descrizione

privateNetworkClientServer

  • Si tratta in genere di un "profilo" privato (che include la subnet locale e la funzionalità di loopback); in una configurazione aziendale dovrebbe includere anche, oltre alla subnet locale, il sito/dominio Active Directory.

  • L'abilitazione di questa impostazione significa che l'app verrà usata nella rete privata di casa o dell'ufficio.

internetClient

  • Consente le comunicazioni con i servizi su Internet, se necessario tramite un proxy. È simile alla funzionalità internetClientServer, ad eccezione del fatto che tutte le comunicazioni devono essere iniziate dal client; il client non rimarrà in ascolto di connessioni da altri host. Non sono consentite connessioni alla subnet locale o loopback.

internetClientServer

  • Consente le comunicazioni con i servizi su Internet, se necessario tramite un proxy. Questa impostazione abilita sia la connettività/raggiungibilità in ingresso da Internet sia le operazioni iniziate dal client in uscita.

Nota  Anche se questa funzionalità abilita le comunicazioni in ingresso, il relativo funzionamento non è garantito. I proxy perimetrali e i firewall della rete di un'organizzazione possono comunque bloccare le comunicazioni in ingresso.
 

Prossimità

Consente a due computer fisicamente vicini (fino a 30 cm) di interagire tra loro mediante le funzionalità dello spazio dei nomi Windows.Networking.Proximity.

 

Dopo aver determinato il tipo di accesso in rete necessario per la tua app, assicurati che siano configurate le funzionalità di rete appropriate, altrimenti l'accesso alla rete potrebbe venire bloccato.

Per informazioni su come abilitare il loopback per l'accesso in rete e risolvere i problemi di isolamento rete, vedi Come abilitare il loopback ed eseguire il debug dell'isolamento di rete.

Risposta ai cambiamenti di stato della rete

Quando Windows 8.1, Windows Phone 8.1 o Windows Server 2012 R2 rileva nuove reti, fornisce automaticamente nuove opzioni di connettività. Ad esempio, se un utente sta usando la sua rete 3G per trasmettere dati e successivamente entra nel raggio di una rete Wi-Fi, la nuova opzione di connettività sarà disponibile per l'applicazione, se ne vale la pena.

Quando si usano i dispositivi mobili, la connettività di rete non sempre è costante. Una rete 3G potrebbe non essere disponibile in determinati punti dell'abitazione o dell'ufficio mentre la rete Wi-Fi è ancora disponibile, così come quest'ultima potrebbe non essere più raggiungibile quando l'utente esce di casa o dall'ufficio. In alcuni casi, inoltre, non è disponibile alcuna rete. Con il proliferare di reti Mobile Broadband e Wi-Fi, questi cambiamenti di stato (connettività non costante o nessuna rete disponibile) diventeranno comuni. Le connessioni non passano in modo automatico e diretto a una nuova rete, ma è necessario coinvolgere le applicazioni. Nota che, in base ai criteri predefiniti di Windows 8.1, Windows Phone 8.1, e Windows Server 2012 R2, vengono preferite reti senza restrizioni a quelle a consumo e reti più veloci a quelle più lente.

Ogni volta che si verifica un cambiamento di rete, l'accesso in rete può esserne influenzato. Un'app può registrarsi per ricevere notifiche dei cambiamenti dello stato della rete (onNetworkStatusChanged), in modo da essere sempre aggiornata su ogni variazione. Se la connessione che stava usando non è più disponibile (indicato da un errore), l'app potrebbe dover eseguire una delle operazioni seguenti:

  • Provare a rieseguire l'a connessione. Se il tentativo non riesce, attendi un'altra notifica di tipo NetworkStatusChanged.
  • Controllare il costo della rete e provare a connettersi a un'altra rete.

Indicazioni di base per la risoluzione dei problemi

Per la tua app di Windows Runtime, osserva quanto segue:

  • Quando si verifica un errore di rete, prova a rieseguire l'operazione, se appropriato. Ad esempio, non ritentare l'operazione se l'autenticazione non riesce, ma prova a rieseguirla se una rete wireless con cui stavi comunicando è scomparsa perché potrebbe essere disponibile un'altra rete wireless. Molti errori semplicemente scompaiono quando si prova a rieseguire l'operazione. Per questo tentativo, segui le linee guida specificate in precedenza in Risposta ai cambiamenti di stato della rete.

  • Usa API asincrone, in modo che non vi siano chiamate bloccanti sul thread dell'interfaccia utente. Se il completamento di un'operazione di rete impiega molto tempo o si verifica un errore, la tua applicazione non dovrebbe smettere di rispondere. Non emulare un comportamento sincrono sovrastando la natura asincrona di Windows Runtime.

  • Pianifica per tempo un modello per la gestione degli errori. Valuta attentamente come esporre le informazioni di errore all'utente mentre progetti l'applicazione. Outlook, ad esempio, usa un semplice indicatore di rete, Communicator prevede uno schema per la sostituzione dell'intera interfaccia utente e Internet Explorer include una finestra di dialogo orientata ad attività per i download in cui vengono visualizzati i messaggi di errore di rete. Rileva gli errori e le eccezioni per i casi in cui viene generata un'eccezione. Comprendi ogni stringa di errore e informa l'utente nel modo appropriato.

  • Verifica l'applicazione in vari ambienti di rete, provando a disconnetterti e riconnetterti alla rete, sospendere o riprendere il collegamento o passare da una rete a un'altra.

  • Se durante il test dell'applicazione rilevi errori che non sono immediatamente evidenti, puoi abilitare la traccia ETW per raccogliere maggiori dettagli sul problema.

Argomenti correlati

Aggiunta del supporto di rete

Traccia ETW

Come configurare le funzionalità di isolamento della rete

Come abilitare il loopback ed eseguire il debug dell'isolamento di rete