Programmgesteuertes Deaktivieren der Sicherheit in WCF

8

Ich habe die letzten zwei Tage mit WCF gearbeitet und es lief sehr gut mit dem Server und dem Client auf meinem Entwicklungscomputer. Jetzt, da ich versuche, einige verteilte Tests mit dem Client auf einem anderen Rechner im Netzwerk durchzuführen, habe ich Probleme bekommen. Im Moment ist der Fehler, den ich bekomme:

  

Die Nachricht mit Action ' Ссылка ' kann aufgrund eines ContractFilter-Mismatch am EndpointDispatcher nicht am Empfänger verarbeitet werden. Dies kann entweder auf eine Vertragsfehlanpassung (nicht übereinstimmende Aktionen zwischen Sender und Empfänger) oder auf eine Bindungs- / Sicherheitskonflikt zwischen dem Absender und dem Empfänger zurückzuführen sein. Überprüfen Sie, ob Absender und Empfänger den gleichen Vertrag und die gleiche Bindung haben (einschließlich Sicherheitsanforderungen, z. B. Nachricht, Transport, Keine).

Da dies bereits eine enorme Lernerfahrung ist (ich habe noch nie Remoting gemacht, RPC, et al. zuvor) möchte ich das Lernwerkzeug weiterentwickeln und die Sicherheit neu betrachten, wenn ich fertig bin (ich habe nicht die Absicht etwas zu bauen das wird tatsächlich ohne die richtigen Sicherheits Best Practices verwendet werden.)

Anmerkungen:

  • Ich habe keine Konfigurationsdatei für WCF eingerichtet - ich mache alles programmgesteuert.
  • Mein Netzwerk ist nicht Teil einer Domäne, daher funktionierten die Standardsicherheitseinstellungen für mich nicht (mit net.tcp).
  • Ich benutze '.Net 3.5'.

Mein Server wird so erstellt:

%Vor%

Und mein Client ist so erstellt:

%Vor%

Und mein Vertrag (der sich nur in einer Klassenbibliothek befindet, die sowohl dem Client als auch dem Server als Referenz hinzugefügt wird) lautet:

%Vor%

Ich bin der Meinung, dass die Bindung und die Vertragseinrichtung, die ich gemacht habe, sie identisch machen sollten und ich sollte dieses Problem nicht haben (und die Sicherheit sollte ausgeschaltet sein). Ich weiß einfach nicht wohin ich jetzt gehen soll.

    
InvertedAcceleration 12.11.2009, 17:48
quelle

1 Antwort

10

Ich stimme Ihnen zu - es scheint, dass die Sicherheitseinstellungen für Server und Client identisch sind.

Ein Hinweis auf der Seite: Sobald Sie das tun:

%Vor%

Ich glaube nicht, dass Sie im "binding.Security" -Objekt oder darunter noch weitere Einstellungen vornehmen müssen - diese zusätzlichen Zeilen werden nicht benötigt.

Was mir aufgefallen ist, ist Ihr Servicevertrag:

%Vor%

Diese Operationen geben nichts zurück - das ist ungewöhnlich. Das Standardverhalten für einen WCF-Dienst lautet Request / Response - Sie senden eine Anforderung und erhalten eine Antwort zurück.

Entweder veranlassen sie, dass sie etwas zurückgeben (ein Status oder so; wie eine Zeichenkette, ein Int), oder dann müssen Sie sie als "unidirektionale" Aufrufe markieren, so dass WCF weiß, nichts zurück zu erwarten:

%Vor%

Marc

    
marc_s 12.11.2009, 18:07
quelle

Tags und Links