Laden...

WCF mit TCP-Bindung wirft SecurityNegotiationException

Erstellt von deisi vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.483 Views
D
deisi Themenstarter:in
23 Beiträge seit 2016
vor 6 Jahren
WCF mit TCP-Bindung wirft SecurityNegotiationException

hallo leute,

bin neu auf dem Gebiet WCF... habe so einige tutorials durchgearbeitet, aber so recht mag es nicht funktionieren.

ich habe einen server, der mir verschiedenste datentype zurückgeben soll. dies funktioniert auch - solange ich einen localhost angebe.
will ich jedoch einen anderen pc als server angeben, so wirft er eine SecurityNegotiationException.

Hier mal mein testserver


using (ServiceHost host = new ServiceHost(typeof(WcfHost)))
            {
                Uri baseAdress = new Uri("net.tcp://bt-fs1:12345/IGT_Network");
                NetTcpBinding binding = new NetTcpBinding();
                host.AddServiceEndpoint(typeof(IWcfHost), binding, baseAdress);
                host.Open();
                Console.WriteLine("Host-Service started... Press any key to exit!");
                Console.ReadKey();
                host.Close();
            }

hier der testclient


Uri baseAdress = new Uri("net.tcp://bt-fs1:12345/IGT_Network");
                EndpointAddress address = new EndpointAddress(baseAdress);
                NetTcpBinding binding = new NetTcpBinding();
                ChannelFactory<IWcfHost> factory = new ChannelFactory<IWcfHost>(binding, address);
                host = factory.CreateChannel();


                host.Echo(baseAdress.Host + ":" + baseAdress.Port);
                Console.WriteLine("Please enter some words:");
                Console.WriteLine(host.Echo(Console.ReadLine()));

                Console.WriteLine(host.Sum(5, 8));

beim Server habe ich auch schon in der cmd nachgesehen, ob der Port auf abhören steht... da passt alles.

bitte um hilfe

lg deisi

6.911 Beiträge seit 2009
vor 6 Jahren

Hallo deisi,

SecurityNegotiationException

Hast du da in Verbindung mit TCP-Binding mal gegoogelt?

Gib bei der Binding den entsprechenden SecurityMode an und dann klappt es (z.B. None).

Dass die Firewall hier nichts block hast du ja getestet und außerdem wäre dann die Fehlermeldung anders.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

D
deisi Themenstarter:in
23 Beiträge seit 2016
vor 6 Jahren

hallo gfoidl,

danke, war genau das richtige.

D
deisi Themenstarter:in
23 Beiträge seit 2016
vor 6 Jahren
System.ServiceModel.FaultException

Guten Morgen,

Habe meinen Server jetzt fertig eingerichtet, aber wenn ich vom Client eine Verbindung herstellen möchte, dann kommt eine System.ServiceModel.FaultException.

System.ServiceModel.FaultException: Der Server konnte die Anforderung aufgrund eines internen Fehlers nicht verarbeiten. Wenn Sie weitere Informationen zum Fehler erhalten möchten, aktivieren Sie entweder IncludeExceptionDetailInFaults (über das ServiceBehaviorAttribute oder das <serviceDebug>-Konfigurationsverhalten) für den Client, um die Ausnahmeinformationen zurück an den Server zu senden, oder aktivieren Sie die Ablaufverfolgung gemäß der Microsoft .NET Framework SDK-Dokumentation, und überprüfen Sie die Serverablaufverfolgungsprotokolle.

Fehlermeldung:
Server stack trace:
bei System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
bei System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:
bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
bei Server.IWcfHost.Start(String Clientname)
bei Roboter_2.MainForm..ctor() in C:\Users\messmann.FAHRZEUGTECHNIK\Documents\Visual Studio 2015\Projects\IGT_Network\Roboter 2\MainForm.cs:Zeile 48.

Zur Kontrolle rufe ich beim Server alle paar Sekunden den ConnectionState ab... der ist eigentlich auf "Opened"

Habe außerdem keine Ahnung, wo ich diese ServiceBehaviorAttribute finden kann...

mfg

3.003 Beiträge seit 2006
vor 6 Jahren

Habe außerdem keine Ahnung, wo ich diese ServiceBehaviorAttribute finden kann...mfg

Ach, komm schon. Erster Treffer Google-Suche nach "ServiceBehaviorAttribute": ServiceBehaviorAttribute-Klasse

Da ist unten sogar ein Codebeispiel.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

6.911 Beiträge seit 2009
vor 6 Jahren

Hallo deisi,

oder aktivieren Sie die Ablaufverfolgung

Das wäre die passendere Option, da du so mehr über die Fehler in der Trace-Datei erfahren kannst.

Da du den Server -- lt. Code oben -- selbst hostet, so kannst du den auch mit dem Debugger laufen lassen und so noch einfacher die Ursache für den Fehler finden.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"