Come abilitare il loopback e risolvere i problemi relativi all'isolamento 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 ]

Questo argomento spiega come abilitare il loopback per l'accesso di rete e come risolvere i problemi di isolamento della rete in Windows 8 per un'app di Windows Store.

Cosa sapere

Tecnologie

Prerequisiti

  • Le informazioni seguenti si applicano a qualsiasi app di Windows Runtime connessa o in grado di riconoscere la rete che deve stabilire connessioni di rete. Riguardano le app scritte in JavaScript e le app scritte con .NET Framework 4.5 in C#, VB.NET e C++.

Strumento di diagnostica per l'isolamento della rete

Viene fornito uno strumento di diagnostica integrato, CheckNetIsolation.exe, che consente agli sviluppatori di provare, diagnosticare e risolvere problemi relativi a un'app che richiede funzionalità di rete. CheckNetIsolation.exe è uno strumento da riga di comando che riceve parametri di input dalla riga di comando. Dispone di due opzioni principali:

  • LoopbackExempt
    Visualizzare un elenco di app installate esenti dalle restrizioni di loopback IP e che dispongono dell'accesso agli indirizzi loopback. Questa opzione consente anche di aggiungete l'accesso agli indirizzi loopback IP per un'app specifica in fase di test.

  • Debug
    Determina le funzioni abilitate che vengono usate da un'app e le eventuali funzioni non usate. Le funzioni abilitate ma non usate rendono l'app meno sicura. Questa opzione può offrire informazioni anche su eventuali interruzioni del traffico di rete, che possono essere involontarie.

CheckNetIsolation.exe può visualizzare un messaggio di assistenza contenente le informazioni di uso. Per visualizzare la guida, usa il comando di esempio seguente.

CheckNetIsolation -?

Alcune opzioni di CheckNetIsolation.exe richiedono che venga specificato il nome dell'app o l'ID dell'app. Dopo che un'app è stata distribuita su un computer di destinazione, il nome dell'app viene visualizzato nella cartella c:\Program Files\Applications. Si tratta del nome usato per avviare l'app. Si tratta del nome della famiglia di pacchetti visualizzato quando viene usato Microsoft Visual Studio 2013 e rappresenta il contenitore di app. L'ID app viene visualizzato nella chiave del Registro di sistema seguente:

HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer

Abilita il loopback per l'accesso di rete

Non è possibile usare comunicazioni di rete basate su un indirizzo di loopback IP per comunicazioni interprocesso, ovvero tra due diverse app, in un'app di Windows Runtime perché sono limitate dall'isolamento della rete. Le comunicazioni di rete basate su un indirizzo di loopback IP sono consentite all'interno di un'app nell'ambito di uno stesso processo a scopo di comunicazione.

È possibile che uno sviluppatore desideri usare il loopback a scopo di test o debug, anche se tale funzione non sarà disponibile per i clienti. Ad esempio, è possibile che un'app necessiti del download di dati da un servizio Web di un'app di Windows Runtime. Per scopi di sviluppo, lo sviluppatore desidera testare l'app su un solo computer il cui servizio Web locale è configurato su 127.0.0.1.

Nota  Il loopback è consentito solo a fini di sviluppo. L'uso da parte di app di Windows Runtime installate all'esterno di Visual Studio non è permesso. Inoltre, un'app di Windows Runtime può usare un loopback IP solo come indirizzo di destinazione per una richiesta di rete client. Pertanto, un'app di Windows Runtime che usa DatagramSocket o StreamSocketListener per rimanere in attesa su indirizzo di loopback IP non può ricevere pacchetti in entrata.

 

Per abilitare l'accesso agli indirizzi di loopback, uno sviluppatore deve configurare l'isolamento di rete per rimuovere eventuali restrizioni loopback nell'app. Per la ricezione dei pacchetti da parte di un servizio di rete, il listener su una porta TCP o UDP necessita anche dell'accesso da parte delle regole firewall.

Le app installate ed eseguite in Visual Studio verranno registrate automaticamente come esenti dalle restrizioni loopback. Lo sviluppatore può visualizzare l'elenco delle app esenti eseguendo il comando seguente:

CheckNetIsolation.exe LoopbackExempt -s

Inoltre, uno sviluppatore può anche usare lo strumento CheckNetIsolation.exe per aggiungere manualmente esenzioni loopback per un'app.

Per rimuovere le restrizioni loopback di un'app, è necessario specificare l'ID app per il pacchetto. Il comando di esempio di seguito rimuove le restrizioni loopback di un'app in base al nome del contenitore dell'app.

CheckNetIsolation.exe LoopbackExempt –a –p=S-1-15-2-4125766819-3228448775-2449327860-2490758337-1264241865-3581724871-2122349299

L'esenzione da restrizioni loopback può anche essere rimossa per una determinata app. Il comando di esempio seguente rimuove l'esenzione dal loopback per la stessa app.

CheckNetIsolation.exe LoopbackExempt –d –p=S-1-15-2-4125766819-3228448775-2449327860-2490758337-1264241865-3581724871-2122349299

Inoltre, lo strumento CheckNetIsolation.exe consente a uno sviluppatore di rendere un'app esente da tali restrizioni loopback in base al nome del contenitore di applicazioni. Il comando di esempio di seguito rimuove le restrizioni loopback di un'app.

CheckNetIsolation.exe LoopbackExempt –a –n=stocks_mw26f2swbd5nr

L'esenzione da restrizioni loopback può anche essere rimossa da un'app scritta con .NET Framework dalle restrizioni loopback in base al nome del contenitore di applicazioni. Il comando di esempio seguente rimuove l'esenzione dal loopback per la stessa app.

CheckNetIsolation.exe LoopbackExempt –d –n=stocks_mw26f2swbd5nr

L'esenzione da restrizioni loopback può anche essere rimossa per tutte le app installate. Il comando di esempio seguente rimuove l'esenzione dal loopback tutte le app installate nel computer locale.

CheckNetIsolation.exe LoopbackExempt –c

Debug dei problemi di disolamento della rete

L'opzione di debug viene usata per generare un report delle funzionalità di rete usate da un'app.

L'opzione di debug rappresenta un modo per identificare se un'appusa tutte le funzionalità dichiarate nel manifesto dell'app. Se si usa l'opzione di debug, al sistema viene indicato di tracciare le funzionalità dichiarate che vengono usate dall'app e quali funzioni dichiarate non vengono usate.

Per usare l'opzione di debug, distribuisci l'app nel computer di destinazione e determina l'ID e il nome dell'app. Quindi, apri una finestra CMD con privilegi elevati (Esegui come amministratore). Il comando di esempio riportato di seguito imposta l'opzione di debug per un ID app specifico.

CheckNetIsolation.exe Debug –p=S-1-15-2-4125766819-3228448775-2449327860-2490758337-1264241865-3581724871-2122349299

Il comando di esempio riportato di seguito imposta l'opzione di debug per un'app basata sul nome del contenitore di applicazioni.

CheckNetIsolation.exe Debug –n=stocks_mw26f2swbd5nr

Dopo aver impostato l'opzione di debug, avviare l'app da una finestra CMD con privilegi elevati. Dovresti eseguire e tastare l'app in base alle operazioni che l'app eseguirà. Premi CTRL-C al termine del test e mentre l'app è ancora in esecuzione. Viene visualizzato un report di riepilogo nella finestra CMD in cui è elencato lo stato delle funzionalità di rete con una voce per ciascuna funzionalità a indicare se la funzionalità è stata dichiarata e se è stata usata. Se vengono dichiarate funzionalità non necessarie, il report di riepilogo indicherà che una funzionalità non è stata usata (contrassegnata nel report di riepilogo come Not Used e Insecure). Inoltre, in un report di traffico dettagliato viene elencato l'indirizzo IP di origine e destinazione usato per l'accesso alla rete.

Il testo seguente mostra l'output per un'app in cui sono abilitate funzionalità in eccesso.

Network Isolation Debug Session started.
Reproduce your scenario, then hit Ctrl-C when done.

Summary Report

Network Capabilities Status
----------------------------------------------------------------------
    InternetClient                Not Used and Insecure
    InternetClientServer          Not Used and Insecure
    PrivateNetworkClientServer    Used and Declared


Detailed Traffic Report
----------------------------------------------------------------------

    InternetClient                Not Used and Insecure

----------------------------------------------------------------------

    InternetClientServer          Not Used and Insecure

----------------------------------------------------------------------

    PrivateNetworkClientServer    Used and Declared

------------------------------------------------------------------
       10.195.58.77    10.195.58.78

Il testo seguente mostra l'output per un'app in cui sono abilitate funzionalità appropriate.

Network Isolation Debug Session started.
Reproduce your scenario, then hit Ctrl-C when done.

Summary Report

Network Capabilities Status
----------------------------------------------------------------------
    PrivateNetworkClientServer    Used and Declared


Detailed Traffic Report
----------------------------------------------------------------------

    PrivateNetworkClientServer    Used and Declared

------------------------------------------------------------------
       10.195.58.77    10.195.58.78

Argomenti correlati

Aggiunta del supporto di rete

Come configurare le funzionalità di isolamento della rete

Risoluzione dei problemi e debug delle connessioni di rete