Тайм-аут ASP.NET UpdatePanel - PullRequest
       37

Тайм-аут ASP.NET UpdatePanel

51 голосов
/ 01 октября 2008

Я делаю запрос от UpdatePanel, который занимает более 90 секунд. Я получаю эту ошибку времени ожидания:

Ошибка времени выполнения Microsoft JScript: Sys.WebForms.PageRequestManagerTimeoutException: запрос сервера тайм-аут.

Кто-нибудь знает, есть ли способ увеличить количество времени до истечения времени ожидания вызова?

Ответы [ 7 ]

87 голосов
/ 01 октября 2008

В ScriptManager есть свойство:

AsyncPostBackTimeout="300"
42 голосов
/ 16 марта 2010

В моем случае объект ScriptManager был создан в файле мастер-страницы, который затем был предоставлен для доступа к файлам страницы контента. Таким образом, чтобы изменить свойство ScriptManager.AsyncPostBackTimeout на странице содержимого, мне нужно было получить доступ к объекту в файле aspx.cs страницы содержимого:

protected void Page_Load(object sender, EventArgs e)
{
     . . . 
     ScriptManager _scriptMan = ScriptManager.GetCurrent(this);
     _scriptMan.AsyncPostBackTimeout = 36000;
}
11 голосов
/ 01 октября 2008

Это добилось цели (в основном просто игнорируя все таймауты):

<script type="text/javascript"> 
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) { 
            if (args.get_error() && args.get_error().name === 'Sys.WebForms.PageRequestManagerTimeoutException') { 
                            args.set_errorHandled(true); 
            } 
        }); 
    </script> 
7 голосов
/ 21 мая 2010

Пожалуйста, следуйте инструкциям ниже:

Шаг 1: В web.config , установите httpRuntime maxRequestLength="1024000" executionTimeout="999999"

Шаг 2. Добавьте следующий параметр в ScriptManager на своей веб-странице: AsyncPostBackTimeout ="360000"

Это решит вашу проблему.

2 голосов
/ 01 октября 2008

Это можно настроить, изменив время ожидания сценария ASP в IIS.

Он находится в свойствах вашего веб-сайта, виртуального каталога, кнопки настройки, а затем на вкладке параметров.

или установите его, задав свойство Server.ScriptTimeout.

1 голос
/ 01 октября 2008

Ну, я полагаю, это сработало бы, если бы вы просто хотели, чтобы запрос был отброшен с возможностью того, что он никогда не будет полностью выполнен ...

Добавьте свойство AsyncPostBackTimeOut в тег ScriptManager, чтобы изменить время ожидания по умолчанию с 90 секунд на что-то более подходящее для вашего приложения.

Далее, обратите внимание на изменение веб-службы, принимающей вызов, для ускорения перемещения. 90 секунд могут быть бесконечностью в интернет-времени.

0 голосов
/ 30 мая 2014

Проблема, с которой вы сталкиваетесь, заключается в том, что ваше приложение сталкивается с таймаутом при запросе базы данных SQL. Для возврата результата требуется больше времени, чем по умолчанию. Поэтому вам нужно увеличить свойство ConnectionTimeout.

Вы можете сделать это несколькими способами:

  1. Строка подключения имеет свойство ConnectionTimeout. Это свойство определяет максимальное количество секунд, в течение которого ваш код будет ожидать открытия соединения с базой данных. Вы можете установить время ожидания подключения в разделе строки подключения в web.config.

    <connectionstrings>
        <add name="ConnectionString" 
             connectionstring="Database=UKTST1;Server=BRESAWN;uid="      system.data.sqlclient="/><br mode=" hold=" /><br mode=" html="> <asp:ToolkitScriptManager runat=" server=" AsyncPostBackTimeOut=" 6000="><br mode=">
        </add>
    </connectionstrings>
    
  2. Вы можете поместить AsyncPostBackTimeout="6000" в .aspx страницу

    <asp:ToolkitScriptManager runat="server" AsyncPostBackTimeOut="6000">
    </asp:ToolkitScriptManager>
    
  3. Вы можете установить таймаут в SqlCommand, когда вы вызываете хранимую процедуру в файле .cs.

    command.CommandTimeout = 30*1000;
    

Надеюсь, у вас есть решение!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...