2016-06-08 13 views
0
abgebrochen

Dieses Timeout mich verrückt Jungs macht, ich brauche deine Hilfe wirklich zu verstehen:VS2015/ASP.NET WebService: Server-Side-Timeout, Verbindung

ich einen Klienten habe, die eine Python/WSGI ist/Flask-App (auf einem Tornado-Server), die die Lib requests verwenden, um einen Webdienst auf meinem Server aufzurufen, ein ASP.NET-Website-Projekt (läuft derzeit auf VS2015 iisexpress.exe).

Der Web-Dienst wird einfach mit einer SVC-Datei und eine C# Klasse mit [ServiceContract] und [OperationContract] Anmerkungen und nichts über dieses WebService in den web.config erklärt.

[ServiceContract] 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class GestionCand 
    { 
    ... 
     [WebInvoke(Method = "POST", UriTemplate = "cand/listByPk", RequestFormat = WebMessageFormat.Json)] 
     [OperationContract] 
     public Message GetbyPkList(String listPk) 
     { 
     ... 

Alles funktioniert gut, bis ich eine Anforderung versuchen, die 3 bis 4 Minuten zu verarbeiten (eine lange Zuordnungsschleife mit Tausenden von Einträgen). Der Aufruf funktioniert, aber nach 2 min, während mein .NET Web-Service noch in der Schleife (so ohne Fehler und bevor sie das Ende des Codes erreichen), mein Python App sagt:

File "/Mis/lib/python2.7/site-packages/requests/adapters.py", line 415, in send 
    raise ConnectionError(err, request=request) 
ConnectionError: ('Connection aborted.', BadStatusLine("''",)) 

Ich bin nicht sicher von diesem Fehler, aber nach einer Suche, bedeutet dies, dass der Server beschlossen, die Verbindung zu stoppen, und das ist, was ich auf Wireshark (ein TCP-Aufruf von ASP.NET-Server zu Python-App mit [FIN,ACK]), aber der .NET-Code läuft noch normal, es ist noch nicht fertig. Meine WebService-Ausführung wird 1 Minute nach dem Abbruch der Verbindung beendet. Wenn der Server also entscheidet, die Verbindung abzubrechen, wartet er nicht oder stoppt die Ausführung.

Und dort, wo ich viele Lösungen und keiner von ihnen hat gearbeitet, um zu versuchen gestartet: Ändern Sie den <httpRuntime executionTimeout> (und Zusammenstellung auf debug=false), erstellen Sie eine andere web.config im WebService Ordner dieses executionTimeout zu setzen, fügen Sie einen basicHttpBinding Abschnitt Stellen Sie die SendTimeout, set Timeout=None auf Python requests Anruf ... Nichts hat diese 2 Minuten Timeout geändert.

Es ist wirklich IIS/ASP.NET, die dieses Timeout tun? Gibt es da noch etwas zu ändern? Was mache ich falsch?

Antwort

0

Ich habe versucht, meine lange Ausführung auf dem Produktionsserver (IIS8) .... und es funktioniert! ohne Timeout-Einstellung! Diese nicht bearbeitbare serverseitige Zeitüberschreitung scheint nur bei VS2015 IIS Express ....

zu existieren