2012-05-25 9 views
20

Sto sviluppando. NET 4.0 C# App Windows Form che ospita il servizio WCF su alcune porte predefinite (diciamo 12345). Abbiamo un'altra app per iPad che parla con questo servizio WCF e questa connessione è bloccata da Windows Firewall. I miei utenti hanno sempre problemi con questo perché devono ricordarsi di aggiungere questa app all'elenco delle eccezioni, ecc., Il che causa frustrazione.come visualizzare la finestra di dialogo "Windows Firewall ha bloccato alcune funzionalità di questo programma" per la mia app?

Cosa è necessario per rendere Windows più simile a visualizzazione popup sullo screenshot qui sotto per la mia app, per renderlo più user-friendly?

UPDATE - Capisco che posso aggiornare in modo programmatico le regole in Windows Firewall. Tuttavia, ciò richiederebbe privilegi di amministratore che non è sempre fattibile. Ad esempio, sto pensando alle implementazioni di ClickOnce in futuro, non so come funzionerà con questo. Quindi mi sto ancora chiedendo cosa dovrei fare per ottenere quel dialogo.


SOLUZIONE: grazie alla @alexw risposta qui sotto, sono stato in grado di ottenere la finestra di dialogo con questo semplice codice:

IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0]; 
IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, 12345); 

TcpListener t = new TcpListener(ipLocalEndPoint); 
t.Start(); 
t.Stop(); 

e più - non è possibile ottenere questo popup per WCF servizio come documentation states (vedi in basso):

HTTP self-hosted indirizzamento per WCF, non è integrato in Windows firewall. È necessario aggiungere un'eccezione alla configurazione del firewall su consentire le connessioni in entrata utilizzando un URL specifico.

enter image description here

risposta

1

io non sono sicuro di quello che devono essere soddisfatte le condizioni per esporre questa finestra di dialogo, vorrei assumere un'applicazione che tenta di aprire una porta di ascolto su un'istanza di vaniglia di Windows dovrebbe sempre visualizzare questa finestra. Perché non provi ad aggiungere la tua applicazione all'elenco delle "applicazioni autorizzate" o ad aprire manualmente la porta utilizzando l'interoperabilità COM di Windows Firewall (NetFwTypeLib)?

http://blogs.msdn.com/b/securitytools/archive/2009/08/21/automating-windows-firewall-settings-with-c.aspx

+0

grazie. Ho aggiornato la mia domanda: conosco la possibilità di aprire la porta manualmente, ma preferirei che l'utente faccia esplicitamente una scelta. – avs099

+0

L'utente richiede ancora i privilegi di amministratore per "Consenti accesso" utilizzando il prompt di Windows Firewall. Hai provato a scrivere un semplice programma che apre una porta TCP/IP in ascolto e vedere se questo crea un prompt? Forse hai bisogno di farlo brevemente prima che inizi il servizio WCF? –

+0

grazie - ha funzionato esattamente come hai detto tu. Utilizzando TcpListener per iniziare ad ascoltare la porta viene visualizzato il prompt di Windows Firewall. – avs099