Announcement

Collapse
No announcement yet.

WCF Service mit wsdualhttpbinding übers Internet zugreifen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • WCF Service mit wsdualhttpbinding übers Internet zugreifen

    Hi, ich habe eben einige Stunden das Internet dursucht und in unzähligen Foren angebliche Lösungen ausprobiert, etc. Nichts hat geholfen, deshalb frag ich einfach mal selber.

    Ich habe ein kleinen WCF dienst erstellt und benutze wsdualhttpbinding, damit ich ein callback interface benutzen kann um den client zu kontaktieren. Lokal auf meinem Rechner läuft auch alles wunderbar, aber sobald ich den Service auf meinem dedicated Server laufen lasse, können Service und Client nicht mehr miteinander kommunizieren.

    Es kommen wirklich unterschiedliche Fehler, der erste war in etwa "konnte client nicht authentifizieren". Hab gelesen, dass WCF übers Internet eine authentifizierung benötigt. Also habe ich SecurityMode auf None gesetzt. Danach kamen diverse Timeout Fehler, oder so etwas hier:

    "Bei der Sicherheitsaushandlung ist ein Fehler aufgetreten, da die Gegenseite nicht rechtzeitig eine Antwort gesendet hat. Dies kann darauf zurückzuführen sein, dass die zugrunde liegende Transportverbindung abgebrochen wurde."

    Ich hab schon firewall auf beiden Rechnern deaktiviert und meinen PC als DMZ Host im Router eingestellt, hat aber nichts geholfen.

    Habe auch etwas davon gelesen, dass man im Client die "clientBaseAddress" einstellen muss. Hab diverse Dinge ausprobiert.

    Ich würde gerne verstehen was genau das Problem ist. Liegt es noch an der fehlenden authentifizierung, oder kann der Server nicht auf den Client zugreifen ?

    Außerdem würde ich auch gerne wissen wie ich denn Authentifizierung benutzen kann. Windows Authentifizierung soll wohl nur gehen, wenn beide Rechner in der selben Domäne sind, sind sie aber nicht. Also müsste ich wohl Zertifikate benutzen, nur habe damit noch nie etwas gemacht.

    Ich weiss das ist jetzt echt ne Menge, aber ich würd mich tierisch freuen wenn mir einige Leute helfen könnten die ganzen Probleme stück für stück abzuarbeiten.

    Also schon mal danke im Vorraus

    Gruß

  • #2
    Ich habe ein paar Probleme lösen können und will das mal erläutern, für den Fall das Leute mal googlen und die selben Probleme haben.

    wsDualHttpBinding läuft ja über http und benutzt somit nicht den selben Kanal zum Antworten, sondern etabliert für die callbacks einen zweiten Kanal. Da hatte ich dann tatsächlich Probleme wegen dem Router.
    Das eigenartige da fand ich einfach nur, dass es sich im Lan anders verhält, als übers Internet. Im Lan muss man die clientBaseAddress nicht angeben, übers Internet schon.

    In der Client config muss man also so etwas wie clientBaseAddress="http://internetIPort/...." angeben. Im Router dann natürlich den Port forwarden.

    Ich finde allerdings, dass das für eine Benutzerfreundliche Anwendung zu viel Konfigurationsaufwand ist.

    Nach längerer Recherche habe ich einen Artikel gefunden der mich endlich aufgeklärt hat. netTcpBinding ermöglicht ebenfalls eine duplex Kommunikation, verwendet jedoch den selben Kanal. Man hat also keine Probleme mehr wegen dem Router, da der Client die Verbindung zum Server aufbaut.

    Desweiteren habe ich einen Artikel über die Performance von netTcpBinding gefunden, der besagt, dass dieses Binding wohl eins der performantesten ist.

    Damit funktioniert mein Szenario bisher ganz gut. Um die Authentifizierung habe ich mich allerdings noch nicht weiter gekümmert. Für meine Zwecke ist das sowieso auch erst mal egal. Ich habe den SecurityMode also auf None gesetzt.

    Wenn jemand vielleicht irgendwann mal Hilfe mit den configs o.a. braucht, PN an mich.

    Und korrigiert mich wenn ich bei einer Sache vielleicht was falsches erzählt habe.

    Gruß

    Comment


    • #3
      Hallo,

      Und korrigiert mich wenn ich bei einer Sache vielleicht was falsches erzählt habe.
      Du hast nix falsches erzählt.

      Wenn WCF zu WCF kommuniziert dann ist für dieselbe Maschine NetNamedPipeBinding optimal, sonst NetTcpBinding. Die *HttpBinding sind nur dann nötig wenn SOAP wichtig ist.


      mfG Gü
      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

      Comment

      Working...
      X