Délais d'attente avec une longue course ASP.NET MVC Contrôleur de Base HTTPPost Méthode
- Je faire usage de l'appel ajax dans mon ASP.NET Core MVC
afficher les pages
Mavue.cshtml
$.ajax({
processData: false,
contentType: false,
data: new FormData(this),
type: $(this).attr('method'),
url: $(this).attr('action'),
cache: false,
success: function (data) {
$('#mydiv).html(data);
$('#bootstrapModal).modal('show');
Contrôleur de la méthode "Post"
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> MyLongRunningMethod(MyViewModel viewModel)
{
await MyProcess.Longprocess1();
await MyProcess.Longprocess2();
await MyProcess.Longprocess3();
await MyProcess.Longprocess4();
return PartialView("_MyPartialPage");
}
Cela fonctionne mais seulement a un problème pendant un long processus en cours d'exécution. J'obtiens l'erreur suivante pendant le mode de débogage lorsque le processus prend plus de temps que d'environ 2 minutes
Je comprends que c'est à faire avec l'expiration du délai d'attente
dans les versions précédentes de ASP.NET MVC vous pouvez apparemment augmenter le délai d'attente dans votre asp.net contrôleur de l'action.
HttpContext.Current.Server.ScriptTimeout = 90000;
Toutefois, cela n'existe pas dans ASP.NET Core
Je veux augmenter le délai d'attente pour le débogage et le déploiement pour un particulier asp.net le contrôleur.
Pour la production je peux le mettre à l'échelle mondiale dans le web.config
en ajoutant requestTimeout à l'existant httpPlatform tag.
par exemple, pour 10 minutes
<httpPlatform requestTimeout="00:10:00" ....
Une question semblable a été posée, mais la réponse donnant à l'aide d'un CancellationToken
mais de le lire, il ne semble pas qu'il pourra m'aider avec les délais d'attente.
- Comment puis-je configurer le délai d'expiration dans Visual Studio 2015 mode de débogage comme je peux le faire quand je le déployer?
- EST-il par contrôleur paramètre de délai d'attente comme dans
ASP.NET 4
?
OriginalL'auteur devfric | 2016-05-27
Vous devez vous connecter pour publier un commentaire.
Réglage de la
RequestTimeout="00:20:00"
sur leaspNetCore
tag et le déploiement du site fera pas de délai d'attente.Question maintenant se produit uniquement lors de l'exécution de Visual Studio en mode debug, mais pas en mode release.
Prendre note: ASP.NET RTM la
httpPlatform
tag a été remplacé paraspNetCore
dans leweb.config
Exemple pour ASP.NET de Base
À l'aide de .net de base 1.1 maintenant et cela semble fonctionner!
avez-vous trouvé aucune solution pour le mode debug??
Si vous êtes en cours d'exécution dans Visual Studio, essayez de le lancer en Mode Console au lieu de IIS. Vous devriez voir une option qui est le même nom que votre nom de la solution dans la liste déroulante qui affiche IIS, et cette option ne semble pas avoir le délai limite.
Fonctionne avec 2.0 trop
OriginalL'auteur devfric
Mais en 2.0 il n'y a pas de
web.config
fichier dans le projet. Il est généré automatiquement.J'ai résolu le problème en ajoutant
.UseKestrel(...)
à laBuildWebHost
fonction dansProgram.cs
fichier comme suit:OriginalL'auteur Иванцов Дмитрий
Dans mon cas, nous avions encore le 502 erreur de dépassement de délai à 2 minutes, même après la mise à jour de la
requestTimeout
paramètre. Il s'est avéré que kestrel a 2 minutes à garder vivante délai qui doit être remplacée:OriginalL'auteur gezzahead