2010-06-09 6 views
11

Ich habe einen WCF-Dienst mit einem HttpBinding. Der Dienst wird in einem Self-Hosting-Prozess (einem Windows-Dienst) ausgeführt, und dieser Prozess befindet sich in der Windows-Firewall-Ausnahmeliste.WCF-Dienst von Windows-Firewall blockiert

Wenn die Firewall aktiv ist und ich versuche, mit einem C# -Client oder Internet Explorer auf den Dienst zuzugreifen, reagiert der Dienst nicht. Aber wenn die Firewall deaktiviert ist, funktioniert die Verbindung wie ein Zauber.

Hat jemand eine Gültigkeit mit WCF und der Windows-Firewall? Das Problem trat auf Windows 7 64bit auf. Ich habe noch kein anderes Betriebssystem getestet.

Was soll ich tun, damit das mit einer aktiven Firewall funktioniert?

Grüße Michael

EDIT: fand ich einen Hinweis, dass die http.sys der Firewall Ausnahmeliste hinzugefügt werden muss, wie wcf Selbst Hosting http.sys verwendet. Irgendwelche Ratschläge, wie man das löst?

EDIT: Ich habe versucht, alle Listening-Port Öffnen von Hand, die auch funktioniert, aber ist keine Option, weil ich nicht weiß, sie im Voraus.

+0

versuchen, den Port zu öffnen, den der Dienst verwendet? Port 80, 8080 oder was auch immer Sie konfiguriert haben. Da es reguläre http verwendet, kann ich das Problem nicht sehen :( – KTrum

+0

Ich habe es gerade ausprobiert und es funktioniert. Aber um eine einfache Benutzererfahrung zu bieten, ist dies keine Option in produktiven Umgebung. (Es scheint, dass der Port geändert wird ...) –

+0

Klingt merkwürdig, dass sich der Port ändern würde? Verwenden Sie IIS, um den Dienst zu veröffentlichen? Ich nehme an, Sie müssten eine Routine ausführen, die überprüft, welchen Port der Dienst jetzt verwendet, und diesen Port in der Firewall öffnen Wenn der Port in der Firewall geschlossen ist, können Sie wahrscheinlich nicht auf den Dienst zugreifen – KTrum

Antwort

5

Versuchen Sie den MSDN-Artikel Configuring HTTP and HTTPS.

+2

Endlich ... Ich bin mir nicht sicher, ob das die Absicht ist Ihre Antwort, aber der Artikel besagt: "Die selbst gehostete HTTP-Adressierung für WCF ist nicht in die Windows Personal Firewall integriert. Eine Ausnahme muss der Firewall-Konfiguration hinzugefügt werden, um eingehende Verbindungen mit einer bestimmten URL zuzulassen. "Ich denke, die Ausnahme ist eine Port-Ausnahme (kein Prozess). Dies ist zumindest meine Erfahrung. –

4

Soweit ich weiß, gehostet Hinzufügen Selbst WCF Service-Prozess zu Firewall funktioniert nicht, weil es nicht, dass Prozess eingehende Anrufe nehmen ist, es funktioniert nur, wenn

  1. Add-Service-Port an den globalen Port Ausnahme
  2. hinzufügen WCF eingehenden Daemon-Prozess, um Ausnahme zu verarbeiten, ich bin nicht sicher über http, aber für net.tcp Bindungen benötigen Sie $ FrameworkDir/SMSvcHost.exe anstelle Ihres Prozesses.