Si vous souhaitez prolonger la durée autorisée pour l'exécution d'un script ASP.NET, augmentez la Server.ScriptTimeout
valeur. La valeur par défaut est 90 secondes pour .NET 1.x et 110 secondes pour .NET 2.0 et versions ultérieures.
Par exemple:
Server.ScriptTimeout = 300;
Cette valeur peut également être configurée dans votre web.config
fichier dans l' httpRuntime
élément de configuration:
<httpRuntime executionTimeout="300"
... other configuration attributes ...
/>
Veuillez noter selon la documentation MSDN :
"Ce délai d'expiration s'applique uniquement si l'attribut de débogage dans l'élément de compilation est False. Par conséquent, si l'attribut de débogage a la valeur True, vous ne devez pas définir cet attribut sur une valeur élevée pour éviter l'arrêt de l'application pendant le débogage. "
Si vous avez déjà fait cela mais constatez que votre session expire, augmentez la HttpSessionState.Timeout
valeur ASP.NET :
Par exemple:
Session.Timeout = 30;
Cette valeur peut également être configurée dans votre web.config
fichier dans l' sessionState
élément de configuration:
<configuration>
<system.web>
<sessionState
mode="InProc"
cookieless="true"
timeout="30" />
</system.web>
</configuration>
Si votre script prend plusieurs minutes à s'exécuter et qu'il existe de nombreux utilisateurs simultanés, envisagez de changer la page en une page asynchrone . Cela augmentera l'évolutivité de votre application.
L'autre alternative, si vous avez un accès administrateur au serveur, est de considérer cette opération de longue durée comme un candidat pour l'implémentation en tant que tâche planifiée ou service Windows.
Réponse géniale et exhaustive par @Kev!
Comme j'ai effectué un long traitement dans une seule page d'administration dans une application WebForms, j'ai utilisé l'option code. Mais pour permettre une correction rapide temporaire sur la production, j'ai utilisé la version de configuration dans une
<location>
balise dans web.config. De cette façon, ma page d'administration / de traitement a eu suffisamment de temps, tandis que les pages destinées aux utilisateurs finaux et autres ont conservé leur ancien comportement de temporisation.Ci-dessous, j'ai donné la configuration pour vous, les Googleurs ayant besoin de la même solution rapide. Vous devez utiliser d' autres valeurs ofcourse que mon exemple « 4 heures », mais DO noter que la session
timeOut
est en quelques minutes, alors que la demandeexecutionTimeout
est en quelques secondesEt - puisque nous sommes déjà en 2015 - pour un correctif non rapide, vous devriez utiliser async / await de .Net 4.5 si possible, au lieu de la page ASYNC de .NET 2.0 qui était à la pointe de la technologie lorsque KEV a répondu en 2010 :).
<configuration> ... <compilation debug="false" ...> ... other stuff .. <location path="~/Admin/SomePage.aspx"> <system.web> <sessionState timeout="240" /> <httpRuntime executionTimeout="14400" /> </system.web> </location> ... </configuration>
la source
Je poste ceci ici, parce que j'ai passé environ 3 et 4 heures dessus, et je n'ai trouvé que des réponses comme celles ci-dessus, qui disent ajouter le
executionTime
, mais cela ne résout pas le problème dans le cas où vous utilisez ASP .NET Core . Pour cela, cela fonctionnerait:Dans le fichier web.config, ajoutez l'
requestTimeout
attribut auaspNetCore
nœud.<system.webServer> <aspNetCore requestTimeout="00:10:00" ... (other configs goes here) /> </system.webServer>
Dans cet exemple, je règle la valeur sur 10 minutes.
Référence: https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module#configuring-the-asp-net-core-module
la source
OutOfProcess
modèle d'hébergement. CarInProcess
il n'y a pas de paramètre de délai. IIS continuera d'attendre la fin du processus, référence ici: github.com/dotnet/AspNetCore.Docs/issues/16870Supprimer le
~
caractère à l'emplacement pourpath="~/Admin/SomePage.aspx"
devient
path="Admin/SomePage.aspx"
la source