Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
WCF - Binding an mehrere IP's - WinAuth - Unterschiedliches Verhalten
EgoFelix
myCSharp.de - Member



Dabei seit:
Beiträge: 38

Themenstarter:

WCF - Binding an mehrere IP's - WinAuth - Unterschiedliches Verhalten

beantworten | zitieren | melden

Hallo!

Ich habe im WCF ein "Multibinding" erstellt, welches an mehreren IP's horcht.

Wenn ich auf dem selben Rechner via IPv4 zu dem Service verbinde, funktioniert alles einwandfrei. Verwende ich stattdessen IPv6, bekomme ich jedesmal die Fehlermeldung "Der Aufrufer wurde vom Dienst nicht authentifiziert." (Windows-Authentifizierung ist fehlgeschlagen).

Mein Binding sieht wie folgend aus:


NetTcpBinding binding = new NetTcpBinding();

// Buffered Mode
binding.TransferMode = TransferMode.Buffered;

// ClientZertifikat deaktivieren
binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None;

// WinAuth und Verschlüsselung
binding.Security.Mode = SecurityMode.TransportWithMessageCredential;
binding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign;
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;

// Sessions aktivieren
binding.ReliableSession.Enabled = true;
binding.ReliableSession.InactivityTimeout = TimeSpan.FromSeconds(30);

// Größen einstellen
binding.MaxBufferSize = int.MaxValue;
binding.MaxReceivedMessageSize = int.MaxValue;
binding.ReaderQuotas.MaxArrayLength = int.MaxValue;
binding.ReaderQuotas.MaxBytesPerRead = int.MaxValue;
binding.ReaderQuotas.MaxDepth = int.MaxValue;
binding.ReaderQuotas.MaxNameTableCharCount = int.MaxValue;
binding.ReaderQuotas.MaxStringContentLength = int.MaxValue;

// Timeouts
binding.ReceiveTimeout = TimeSpan.FromSeconds(30);
binding.SendTimeout = TimeSpan.FromSeconds(30);
binding.CloseTimeout = TimeSpan.FromSeconds(10);
binding.OpenTimeout = TimeSpan.FromSeconds(10);

Als URI wird folgende verwendet:

string.Format("net.tcp://{0}:{1}/TestService/ClientService", System.Net.Dns.GetHostName(), this.settings.Port)

Ich kann mir nicht erklären, warum es auf einer IP geht, auf einer anderen aber nicht. Die Einstellungen bleiben ja die gleichen.

Hat vielleicht jemand schonmal dieses Problem gehabt, oder gibt es beim Multibinding irgendwelche Einschränkungen?
Mit freundlichen Grüßen
Felix
private Nachricht | Beiträge des Benutzers
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1407

beantworten | zitieren | melden

Vielleicht liegt es an der falschen Adresse, wenn du IPV6 verwendest

net.tcp://[ipv6-adresse]:port/ClientService.

Die IP muss in eckige Klammern, damit eindeutig ist, welche teile zur IP, und welche zum Port gehören
private Nachricht | Beiträge des Benutzers
EgoFelix
myCSharp.de - Member



Dabei seit:
Beiträge: 38

Themenstarter:

beantworten | zitieren | melden

Für das Multibinding (An mehreren Adressen), ist es beim net.tcp Binding nötigt, keine IP-Adresse anzugeben, sondern eben den Hostname.
Dies verwende ich extra aus diesem Grund.
Der String lautet also "net.tcp://TestRechner:1234/ClientService". Daher kann auch kein Fehler bei der Angabe der IP passieren.
Mit freundlichen Grüßen
Felix
private Nachricht | Beiträge des Benutzers