ASP.NET MVC и httpRuntime executeTimeout
Я хотел бы увеличить httpRuntime
executionTimeout
для подраздела приложения ASP.NET MVC.
В обычном веб-приложении вы можете использовать:
<configuration>
<location path="UploadPage.aspx">
<httpRuntime executionTimeout="600"/>
</location>
</configuration>
Однако в ASP.NET MVC идея "Папок" на самом деле отсутствует, так как мне поступить?
Предположим, что путь ASP.NET MVC /Images/Upload
с помощью контроллера изображений и действия загрузки.
5 ответов
Вы можете включить весь путь MVC (контроллер и действие) в атрибут пути path тега
<location path="Images/Upload">
<system.web>
<httpRuntime executionTimeout="600" />
</system.web>
</location>
Решение Криса Хайнса работает! Только убедитесь, что не включили ~/ в свой путь.
Этот ответ подробно описывает другой способ - просто установите ScriptTimeout
в вашем коде действия:
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..
}
Если действие находится в контроллере по умолчанию, то home/upload не работает, вы просто указываете имя действия.
Я заметил, что вы специально пытаетесь увеличить время ожидания на странице загрузки. У меня был некоторый успех с загрузчиком "чанкинг" под названием plupload. Относительно простые действия MVC могут быть настроены на получение фрагментов загрузки, добавляя каждый блок по мере его получения. С небольшими кусками вам не нужно будет увеличивать время ожидания. Конечно, могут быть некоторые ограничения браузера, но не
Посмотрите AsyncController, если вы используете его, у вас будет возможность установить атрибут AsyncTimeout для метода действия, чтобы вы могли тайм-аут запроса.
Ссылки, которые мне помогли: http://forums.asp.net/p/1564303/3922462.aspx http://dariosantarelli.wordpress.com/2010/10/16/asp-net-mvc-2-handling-timeouts-in-asynchronous-controllers/