Feed
Google+
Contact
XING
LinkedIn
Twitter
ICQ
meebo.com

WCF – Irreführende Fehlermeldung

by Roland Schumacher alias GENiALi 3. Februar 2010 -- 255 words  -- 7039 mal gelesen

Zur Zeit darf ich an einem grossen Projekt mitarbeiten das regen gebrauch von WCF macht. Die ganze Kommunikation zwischen Server und Client baut auf WCF auf.

Jetzt habe ich einige Zeit an einem Fehler gesucht bei dem die Meldung ziemlich irreführend war, wie sich jetzt zeigte.

Die Fehlermeldung ist in etwa so (gekürzt):

"System.ServiceModel.CommunicationObjectFaultedException" wurde aufgefangen.
  Message="Das Kommunikationsobjekt \"System.ServiceModel.Security.SecuritySessionClientSettings`1+ClientSecurityDuplexSessionChannel[System.ServiceModel.Channels.IDuplexSessionChannel]\" kann nicht zur Kommunikation verwendet werden, weil es sich im Faulted-Status befindet."

Wenn ich mir die Meldung jetzt so anschaue denke ich mir, dass scheint doch ein Problem mit der Security zu sein. So ganz klassisch. Berechtigungen auf irgend eine Ressource oder so.

Weit gefehlt. Hat nicht mit dieser Sicherheit zu tun. Es gibt im WCF noch eine andere Sicherheit. Die gegen DoS (Denial of Service) Angriffe. Das heisst, gewisse Grenzen sind im WCF definiert die nicht überschritten werden dürfen/können. Das ist zum Beispiel die maximale Nachrichtengrösse (maxReceivedMessageSize). Per Default auf 65’536 Byte beschränkt. Das gibt meinem Szenario nicht viel her. Als ich diesen Wert erhöhte kam die Fehlermeldung nicht mehr.

Was mir dabei auffiel, die Einstellung muss nur auf der Client Seite gemacht werden. Auf der Serverseite konnte ich alles so sein lassen wie vorher. Hier ein Stück Code wie es gemacht werden kann.

private static T BindEndpoint<T>(string endPointAdress)
	where T : class
{
	EndpointAddress endpoint = new EndpointAddress(endPointAdress);

	NetTcpBinding binding = new NetTcpBinding();
	binding.MaxReceivedMessageSize = 10485760;

	ServiceClient<T> client = new ServiceClient<T>(binding, endpoint);

	return (T)client.InnerChannel;
}

Die Methode wir 1 zu 1 kopiert nicht einfach so funktionieren. Der relevante Teil ist in Zeile 7 zu finden. Die Nachrichtengrösse kann somit etwa 10MB betragen.

kick it on dotnet-kicks.de

Tags: , ,

Entwicklung

Pingbacks and trackbacks (1)+

Kommentar schreiben

  Country flag

biuquote
  • Kommentar
  • Live Vorschau
Loading

Statistik

Gesamte Posts: 1018
Dieses Jahr: 0
Diesen Monat: 0
Diese Woche: 0
Kommentare: 922
Total Bewertungen: 84
Ø Bewertung: 4,37
Meisten Kommentare
Google+ ... (28)
Beste Ø Bewertung
Tryton - Teil 6 - Installation ... (5)
Meiste Bewertungen
Windows 7 und die ersten Erfah ... (5)

Buttons

Benutzerprofil von GENiALi connection speed test network connection Bloggeramt.de Slug.ch Blog Verzeichnis und Blog Webkatalog Schumacher Roland Seitwert Valid XHTML 1.0 Transitional