2012-05-25 4 views
20

Ich entwickle .Net 4.0 C# Windows Forms App, die WCF-Dienst auf einem vordefinierten Port (sagen wir 12345) hostet. Wir haben eine andere iPad-App, die mit diesem WCF-Dienst kommuniziert - und diese Verbindung wird von der Windows-Firewall blockiert. Meine Benutzer haben immer Probleme damit, weil sie daran denken müssen, diese App der Ausnahmeliste usw. hinzuzufügen - was Frustration verursacht.Wie wird angezeigt "Windows Firewall hat einige Funktionen dieses Programms blockiert" -Dialog für meine App?

Was ist erforderlich, damit Windows Popup wie auf dem Screenshot unten für meine App angezeigt wird, um es benutzerfreundlicher zu machen?

UPDATE - Ich verstehe, dass ich Regeln in der Windows-Firewall programmatisch aktualisieren kann. Dies würde jedoch Administratorrechte erfordern, was nicht immer möglich ist. Ich denke zum Beispiel über ClickOnce-Bereitstellungen in der Zukunft nach - nicht sicher, wie es damit funktionieren wird. Also frage ich mich immer noch, was ich tun soll, um diesen Dialog zu bekommen.


LÖSUNG: dank unten Antwort auf @alexw konnte ich den Dialog mit diesem einfachen Code erhalten:

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

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

und mehr - es ist nicht möglich, diese Pop-up für WCF zu erhalten Service als documentation states (unten sehen):

Self-hosted HTTP für WCF-Adressierung nicht in die Windows-integriertFirewall. Der Firewallkonfiguration muss eine Ausnahme hinzugefügt werden, damit eingehende Verbindungen mit einer bestimmten URL zugelassen werden.

enter image description here

Antwort

1

Ich bin nicht sicher, welche Bedingungen Sie diesen Dialog erfüllt werden müssen aussetzen, würde ich einen Antrag annehmen, dass ein Listening-Port auf einer Vanille-Windows-Instanz zu öffnen versucht, immer diesen Dialog angezeigt werden soll. Warum versuchen Sie nicht, Ihre Anwendung der Liste der "autorisierten Anwendungen" hinzuzufügen oder den Port manuell mit dem Windows-Firewall-COM-Interop (NetFwTypeLib) zu öffnen?

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

+0

danke. Ich habe meine Frage aktualisiert - ich weiß über die Möglichkeit, den Port manuell zu öffnen, aber ich würde es trotzdem bevorzugen, den Benutzer explizit auswählen zu lassen. – avs099

+0

Der Benutzer benötigt weiterhin Administratorrechte für Zugriff zulassen über die Windows-Firewall-Eingabeaufforderung. Haben Sie versucht, ein einfaches Programm zu schreiben, das einen empfangenden TCP/IP-Port öffnet und sieht, ob das eine Eingabeaufforderung erzeugt? Vielleicht müssen Sie das kurz tun, bevor der WCF-Dienst gestartet wird? –

+0

danke - das hat genau so funktioniert, wie du gesagt hast. Wenn Sie mit TcpListener den Port abhören, wird die Windows-Firewall-Eingabeaufforderung angezeigt. – avs099

Verwandte Themen