2017-05-11 2 views
2

Ich habe eine ASP.net Web API, die Timeout-Anforderung um ~ 100 Sekunden ist. Eine meiner Aktionsmethoden benötigt mehr Zeit, um eine Anfrage abzuschließen.Änderungsanfrage Timeout in Asp.net WebAPI

Nach über verschiedene Link gehen, habe ich bereits, dass die folgenden nicht

heraus

a) executionTimeout & ScriptTimeout als Anforderungspipeline vollständig asynchron ist und diese Werte waren für eine synchrone Pipeline damals funktioniert.

b) [AsyncTimeout(seconds)] Attribut, da es nur für MVC Web-Anwendungen und ASP Web-api gilt nicht system.web.mvc

Gibt es einen anderen Ansatz für dieses Szenario auf die Kontrolle Timeout referenziert?

+0

Ich stimme für das Schließen dieser Frage als Off-Topic, weil diese Frage nicht zutrifft. –

Antwort

1

Es wird angezeigt, dass für die Web-API kein Timeout erzwungen wird. Die Zeitüberschreitung trat auf der Client-Seite auf. Nach dem Ändern des HttpClient.Timeout-Werts funktionierte es.

+0

Frank - Können Sie einen Link oder etwas anbieten? Wir sehen WebAPI-Anfragen seit Tagen über die "Arbeitsprozesse" in IIS8. Standardwert für system.web/executionTimeout verwenden Wir wollen diese nach einer gewissen Zeit töten. –

+0

Es gibt keinen mir bekannten Wert, der die Anfrage auf der Web-API-Seite automatisch abbricht. Die einzige Möglichkeit, dies zu tun, wäre, dass der Client (z. B. HttpClient) einen Zeitüberschreitung-Anforderungswert festlegt. Die Anforderung wird dann auf der Clientseite abgebrochen, was zum Abbruch der Verbindung führt. Sobald die Verbindung abgebrochen wurde, erhält der Server eine Benachrichtigung, die sich auf den ASP-Stapel aufbläst, der eine Stornierung der Anfrage signalisiert. Wenn Sie das Abbruch-Token (von einer Aktionsmethode Ihres API-Controllers) weitergeben, sollte es signalisiert werden. –