2008-08-27 4 views
13

Ich habe eine ASP.net-Seite, die einige Excel-Tabellen erstellt und sie an den Benutzer sendet. Das Problem ist, manchmal bekomme ich Http timeouts, vermutlich weil die Anfrage länger als executionTimeout läuft (110 Sekunden pro Standard).Stellen Sie ASP.net executionTimeout in Code/"refresh" -Anforderung

Ich frage mich nur, was meine Möglichkeiten sind, dies zu verhindern, ohne in der Regel die ExecutionTimeout in web.config zu erhöhen?

In PHP existiert set_time_limit existiert, die in einer Funktion verwendet werden können, um seine Lebensdauer zu verlängern, aber ich habe nichts dergleichen in C#/ASP.net gesehen?

Wie gehen Sie mit lang laufenden Funktionen in ASP.net um?

Antwort

13

tun Wenn Sie die Ausführung Timeout für diese Anforderung erhöhen möchten Sie

HttpContext.Current.Server.ScriptTimeout

einstellen Sie können aber nach wie vor das Problem, die haben Client-Timing, das Sie nicht zuverlässig direkt vom Server lösen können. Um das zu umgehen, könnten Sie eine "Verarbeitungs" -Seite implementieren (wie Rob es vorschlägt), die zurückbucht, bis die Antwort fertig ist. Oder Sie möchten AJAX etwas ähnliches ansehen.

+1

Dies funktioniert auch für ASP.NET MVC-Apps - danke! –

1

Ich hatte dieses Problem noch nicht wirklich zu oft selbst, also denken Sie daran.

Gibt es nicht sowieso können Sie den Prozess async ausführen und eine Rückrufmethode angeben, sobald sie abgeschlossen ist, und dann halten Sie die Seite in einem "Wir verarbeiten Ihre Anfrage .." Schleife Zyklus. Sie könnten dies dann öffnen, um einige nette Verbesserungen der Benutzeroberfläche hinzuzufügen.

Nur ein bisschen nachdenken. Das wäre wahrscheinlich das, was sein Ich mag würde :)

+0

Könnten Sie bitte diese Idee ausarbeiten, wie stellen Sie die Callback-Methode ein? –

Verwandte Themen