2008-10-01 3 views
47

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

Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerTimeoutException: The server request timed out.

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

ответ

83

Там есть свойство на ScriptManager:

AsyncPostBackTimeout="300" 
+1

Спасибо. Это просто помогло мне. – David 2010-03-05 15:15:49

2

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

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

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

+0

Server.ScriptTimeout предназначен для обычного скрипта или для асинхронизации? – 2009-01-16 01:30:13

+0

Обычный скрипт, а не скрипт Async. – Bravax 2009-01-21 19:00:25

11

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

<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> 
+0

Я получаю сообщение об ошибке с кодом выше. `ReferenceError: Sys не определен` – 2016-01-22 11:08:58

1

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

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

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

37

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

protected void Page_Load(object sender, EventArgs e) 
{ 
    . . . 
    ScriptManager _scriptMan = ScriptManager.GetCurrent(this); 
    _scriptMan.AsyncPostBackTimeout = 36000; 
} 
4

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

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

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

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

0

Проблема, с которой вы сталкиваетесь, - это когда ваше приложение запускается в тайм-аут в запросе базы данных 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; 
    

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