web-dev-qa-db-fra.com

ASP.NET MVC et httpRuntime executionTimeout

Je voudrais augmenter le httpRuntimeexecutionTimeout pour une sous-section d'une application ASP.NET MVC.

Dans une application Web classique, vous pouvez utiliser:

<configuration>
  <location path="UploadPage.aspx">
    <httpRuntime executionTimeout="600"/>
  </location>
</configuration>

Cependant, il n'y a vraiment pas l'idée de "dossiers" dans ASP.NET MVC, alors comment pourrais-je procéder?

Supposons que le chemin ASP.NET MVC soit /Images/Upload avec un ImagesController et une action de téléchargement.

42
E Rolnicki

Vous pouvez inclure l'intégralité du chemin MVC (contrôleur et action) dans l'attribut path de la balise <location>. Quelque chose comme ça devrait fonctionner:

<location path="Images/Upload">
    <system.web>
        <httpRuntime executionTimeout="600" />
    </system.web>
</location>
51
Chris Hynes

solution Chris Hynes fonctionne! Assurez-vous simplement de ne pas inclure ~/dans votre chemin.

Cette réponse détaille une autre manière - définissez simplement le ScriptTimeout dans votre code d'action:

public ActionResult NoTimeout()
{
    HttpContext.Server.ScriptTimeout = 60 * 10; // Ten minutes..
    System.Threading.Thread.Sleep(1000 * 60 * 5); // Five minutes..
    return Content("NoTimeout complete", "text/plain"); // This will return..
}
8
Jarrod Dixon

Si l'action est dans le contrôleur par défaut, alors home/upload ne fonctionne pas, il vous suffit de mettre le nom de l'action.

1
KevinUK

Je remarque que vous essayez spécifiquement d'augmenter le délai d'attente sur une page de téléchargement. J'ai eu un certain succès avec un uploader "en morceaux" appelé plupload. Une action MVC relativement simple peut être configurée pour recevoir les morceaux du téléchargement, en ajoutant chaque morceau au fur et à mesure qu'il est reçu. Avec les petits morceaux, vous n'aurez pas besoin d'augmenter le délai d'attente. Bien sûr, il peut y avoir des limitations de navigateur, mais n

http://plupload.com/

1
Greg Ogle

Jetez un œil à AsyncController, si vous l'utilisez, vous aurez la possibilité de définir un attribut AsyncTimeout sur une méthode d'action, de sorte que vous pourrez expirer une demande.

Liens qui m'ont aidé: http://forums.asp.net/p/1564303/3922462.aspxhttp://dariosantarelli.wordpress.com/2010/10/16/asp -net-mvc-2-manipulation-timeouts-in-asynchronous-controllers /

0
jeroen.verhoest