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
Windows.Networking.BackgroundTransfer
Abilita funzionalità di trasferimento avanzate per il download e il caricamento.
-
Consente la comunicazione in rete mediante socket e WebSocket.
-
Abilita l'accesso a risorse Web mediante il protocollo AtomPub.
-
Gestisce i feed di diffusione.
-
Abilita la connessione a servizi Web mediante un client Web moderno.
-
Abilita la connessione a servizi Web mediante un client Web.
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