2016-12-12 4 views
0

Ich arbeite derzeit an einem Client/Server-Programm, das wshttpdualbinding für die Kommunikation in vs mit C# verwendet. Also rufe ich Webservices über diese Bindung vom Server an.wsDualHttpBinding keine Anfrage an Server senden

Alles funktionierte gut, aber in den letzten Tagen stoße ich auf folgendes Problem: Wenn ich einen Dienst vom Server anrufe, hört der Client einfach auf zu arbeiten und reagiert nicht mehr. Nichts wird vom Client gesendet.

kann ich nicht viel schreiben, weil es ein großes Projekt ist, aber ich werde versuchen, die besten Schnipsel zu schreiben:

Bindung:

<bindings> 
    <basicHttpBinding> 
    <binding name="BasicHttpBinding_AuthenticationService" closeTimeout="03:10:00" 
     openTimeout="03:10:00" receiveTimeout="03:10:00" sendTimeout="03:10:00" 
     bypassProxyOnLocal="false" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
     useDefaultWebProxy="true" allowCookies="false" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" > 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
     maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     <security mode="None"> 
     <transport clientCredentialType="None" proxyCredentialType="None" 
      realm="" /> 
     <message clientCredentialType="UserName" algorithmSuite="Default" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
    <wsDualHttpBinding> 
    <binding name="WSDualHttpBinding_Service" closeTimeout="03:10:00" 
     openTimeout="03:10:00" receiveTimeout="03:10:00" sendTimeout="03:10:00" 
     bypassProxyOnLocal="false" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
     useDefaultWebProxy="true" messageEncoding="Text" textEncoding="utf-8" > 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
     maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     <security mode="None"> 
     <message clientCredentialType="UserName" algorithmSuite="Default"/> 
     </security> 
    </binding> 
    </wsDualHttpBinding> 
</bindings> 

Problem verursacht Code:

Clusterrationalemapping cr = new Clusterrationalemapping 
{ 
    Textbricks = rationale, 
    Cluster = cluster, 
    Project = CurrentProject 
}; 
var clusterrationaleId = 0; 
if (cluster.AddClusterRationaleMapping(cr)) 
{         
    clusterrationaleId = _service.SaveItem(cr); 
    cr.Id = clusterrationaleId; 
    if(rationale.Clusterrationalemappings == null) rationale.Clusterrationalemappings = new List<Clusterrationalemapping>(); 
    rationale.Clusterrationalemappings.Add(cr); 
} 

Eine Funktion wird aufgerufen, die einen neuen clusterrationalemapping für einen bestimmten Cluster erstellt. Die Variablen rational und CurrentProject sind immer gleich. nur Cluster ist anders. Die meiste Zeit funktioniert alles und service.SaveItem gibt die neue ID wie erwartet zurück. Aber für einen speziellen Cluster funktioniert es nicht. service.SaveItem stoppt und erstarrt das Tool, bis ich eine Ausnahme erhalte (der Server hat nicht rechtzeitig geantwortet/keine Antwort gegeben).

Ich bin sicher, dass die wsDualHttpBinding richtig eingestellt ist. Wenn ich die Zeile Project = CurrentProject auskommentiere und sie durch Project = new Project(); ersetze, funktioniert alles wieder gut für diesen Cluster.

So sieht es aus wie clusterrationalmapping könnte für das Senden zu groß werden. Aber die Ausnahme sagt das nicht. Und ich habe es vom Server bekommen - aus dieser Richtung hat es funktioniert.

Ich habe Microsoft Service Trace Viewer zum Debuggen Zweck und ich kann dort sehen, dass es sofort eine Ausnahme löst, dass der Endpunkt nicht erreicht werden konnte. Ich bin mir ziemlich sicher, dass der Service beim Serialisieren des Objekts stirbt.

Gibt es eine Möglichkeit, in den Dienst zu debuggen, um zu sehen, wann genau, oder besser, warum es fehlschlägt?

Vielen Dank im Voraus für Ihre Hilfe.

Antwort

0

Da ich keine Lösung finden konnte - ich denke immer noch, dass es ein Problem mit dem Serializer und einer zu großen/verschachtelten Klasse gab, änderte ich die Bindung zu nettcp und es funktioniert jetzt.

Verwandte Themen