2010-06-09 8 views
11

Ho un servizio WCF che utilizza una HttpBinding. Il servizio è in esecuzione in un processo di self-hosting (un servizio Windows) e questo processo si trova all'interno dell'elenco delle eccezioni di Windows Firewall.Servizio WCF bloccato da Windows Firewall

Se il firewall è attivo e sto tentando di accedere al servizio utilizzando un client C# o Internet Explorer, il servizio non risponde. Ma se il Firewall è disabilitato, la connessione funziona come un incantesimo.

Qualcuno ha una scadenza con WCF e Windows Firewall? Il problema si presentò su Windows 7 a 64 bit. Non ho ancora provato un altro sistema operativo.

Che cosa dovrei fare per ottenere questo funzionamento con un firewall attivo?

saluti Michael

EDIT: ho trovato un indizio, che il Http.sys deve essere aggiunto all'elenco delle eccezioni del firewall, come WCF auto di hosting utilizza http.sys. Qualche consiglio, come risolvere questo?

MODIFICA: Ho provato ad aprire manualmente tutte le porte di ascolto, il che funziona anche, ma non è un'opzione, perché non le conosco in anticipo.

+0

provare ad aprire la porta utilizzata dal servizio? Porta 80, 8080 o qualsiasi altra cosa tu abbia configurato. Dal momento che utilizza il normale http non riesco a vedere il problema :( – KTrum

+0

ho appena provato e funziona, ma al fine di fornire una semplice esperienza utente, questa non è un'opzione in ambiente produttivo. (Sembra che la porta è cambiata ...) –

+0

Sembra strano che la porta cambierebbe? Stai usando IIS per pubblicare il servizio? Suppongo che dovresti fare una routine che controlli quale porta il servizio usa ora e aprire quella porta programmaticamente nel firewall, se questo è anche se la porta è chiusa nel firewall, probabilmente non sarà possibile accedere al servizio – KTrum

risposta

5

Provare l'articolo MSDN Configuring HTTP and HTTPS.

+2

Infine ... Non sono sicuro se questo è l'intensione di la tua risposta, ma l'articolo afferma che: "L'indirizzamento HTTP self-hosted per WCF non è integrato nel firewall personale di Windows. Un'eccezione deve essere aggiunta alla configurazione del firewall per consentire connessioni in entrata usando un particolare URL. "Penso che l'eccezione sia un'eccezione di porta (non di processo). Almeno questa è la mia esperienza. –

4

Per quanto ne so, l'aggiunta di auto ospitato processo di servizio WCF per firewall non funziona, perché non è quel processo di prendere le chiamate in entrata, funziona solo se la porta di servizio

  1. metti in salvo porto globale
  2. aggiungi il processo del daemon in entrata WCF per elaborare l'eccezione, non sono sicuro di http, ma per i collegamenti net.tcp, hai bisogno di $ FrameworkDir/SMSvcHost.exe invece del tuo processo.