Тайм-аут ASP.NET UpdatePanel
-
03-07-2019 - |
Вопрос
Я делаю запрос от 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.
Вы можете сделать это несколькими способами:
Строка подключения имеет
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>
Вы можете положить
AsyncPostBackTimeout="6000"
в.aspx
страница<asp:ToolkitScriptManager runat="server" AsyncPostBackTimeOut="6000"> </asp:ToolkitScriptManager>
Вы можете установить тайм-аут в
SqlCommand
, где вы вызываете хранимую процедуру в файле .cs.command.CommandTimeout = 30*1000;
Надеюсь, у вас есть решение!