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?