2010-06-09 16 views
11

Tengo un servicio WCF usando un HttpBinding. El servicio se ejecuta en un proceso de alojamiento propio (un servicio de Windows) y este proceso se encuentra dentro de la lista de excepciones de Windows Firewall.Servicio WCF bloqueado por el Firewall de Windows

Si el cortafuegos está activo y estoy intentando acceder al servicio utilizando un cliente C# o Internet Explorer, el servicio no responde. Pero si el Firewall está desactivado, la conexión funciona como un amuleto.

¿Alguien ha expirado con WCF y el Firewall de Windows? El problema surgió en Windows 7 64 bits. No intenté con otro sistema operativo todavía.

¿Qué se supone que debo hacer para que esto funcione con un servidor de seguridad activo?

Regards Michael

EDIT: Me encontrado una pista, que el http.sys tiene que ser añadido a la lista de excepciones del cortafuegos, como WCF auto de alojamiento utiliza http.sys. ¿Algún consejo, cómo resolver esto?

EDIT: Intenté abrir todos los puertos de escucha manualmente, lo que también funciona, pero no es una opción, porque no los conozco con antelación.

+0

intenta abrir el puerto que utiliza el servicio? es decir, el puerto 80, 8080 o lo que sea que haya configurado. Dado que usa http con regularidad, no puedo ver el problema :( – KTrum

+0

Lo probé y funciona, pero para proporcionar una experiencia de usuario simple, esta no es una opción en el entorno productivo. (Parece que el puerto ha cambiado ...) –

+0

¿Suena raro que cambie el puerto? ¿Estás utilizando IIS para publicar el servicio? Supongo que tendrías que hacer una rutina que verifica el puerto que el servicio usa ahora y abrir ese puerto programáticamente en el firewall, si eso es Incluso si el puerto está cerrado en el firewall, probablemente no podrá acceder al servicio. – KTrum

Respuesta

5

Pruebe el artículo de MSDN Configuring HTTP and HTTPS.

+2

Finalmente ... No estoy seguro de si esta es la intensión de su respuesta, pero el artículo establece que: "El direccionamiento HTTP alojado en el servidor para WCF no está integrado en el firewall personal de Windows. Se debe agregar una excepción a la configuración del firewall para permitir conexiones entrantes usando una URL particular. "Creo que la 'excepción' es una excepción de puerto (no un proceso). Al menos esta es mi experiencia. –

4

Por lo que yo sé, la adición de uno mismo acogió WCF proceso de servicio al servidor de seguridad no funciona, porque no es ese proceso de tomar las llamadas entrantes, sólo funciona si el puerto de servicio

  1. añadir a excepción de puerto mundial
  2. agregar el proceso del demonio entrante de WCF para procesar la excepción, no estoy seguro acerca de http, pero para los enlaces net.tcp, necesita $ FrameworkDir/SMSvcHost.exe en lugar de su proceso.
Cuestiones relacionadas