Вопрос

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

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

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

Это было полезно?

Решение

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

AsyncPostBackTimeout="300"

Другие советы

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

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

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

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

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

Шаг 1:В веб.конфигурация, набор httpRuntime maxRequestLength="1024000" executionTimeout="999999"

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top