Ich entwickle einen WCF-Web-Service auf WebHttpBinding, Client-Anwendung ruft diesen WCF-Webservice bei Bedarf (HTTP POST) oder über Scheduler Windows-Dienst (derzeit Quartz.net).Lange Zeit läuft WCF 504 GATEWAY_TIMEOUT Fehler
Bei jedem Anruf wird eine Liste von Aufgaben ausgeführt, die 10-30 Minuten dauern können. Ich bekomme 504 Gateway_Timeout Fehler nach 1 Minute. Ich habe versucht, das Limit im WCF-Webservice zu erhöhen, aber immer noch den Fehler zu bekommen.
<webHttpBinding>
<binding name="webHttpBindingWithJsonP" closeTimeout="00:30:00" openTimeout="00:30:00" receiveTimeout="00:30:00" sendTimeout="00:30:00" maxReceivedMessageSize="50000000" maxBufferSize="50000000" maxBufferPoolSize="50000000" crossDomainScriptAccessEnabled="true"/>
</webHttpBinding>
<httpRuntime executionTimeout="1800" targetFramework="4.0"/>
Unabhängig von dem Fehler wird die Aufgabe immer abgeschlossen. Ich bin mir nicht sicher, ob WCF noch läuft, wenn die Web-Anfrage abgelaufen ist? Wenn eine Aufgabe weniger Zeit benötigt, zum Beispiel eine halbe Minute, dann gibt sie ein gültiges Ergebnis zurück.
Ich habe versucht, Trace-Protokolle mit allen switchvalue und TraceViewer verwenden, um die Ausgabe zu überwachen, keine Fehler gefunden wurden.
Meine Fragen sollten WCF-Service als WebHttpBinding-Service entworfen werden, oder sollte ich es als einen anderen Typ entwerfen?
Warum es nicht als ein einseitiger Anruf vom Client einrichten und dann den Client in regelmäßigen Abständen den Dienst abfragen, um einen Status zu erhalten. – Tim
@Tim, ja in der Client-App, verwende ich Task.Run(), um eine Fire & Forget API-Aufruf zu implementieren, nur wenn ich die WCF in Chrome Postman testen, gibt es einen Fehler 504. Ich möchte sicherstellen, dass der Prozess in WCF noch läuft, nachdem 504 zurückgegeben wurde. –