Ответ 1
В ScriptManager есть свойство:
AsyncPostBackTimeout="300"
Я делаю запрос от 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: В web.config установите httpRuntime maxRequestLength="1024000" executionTimeout="999999"
Шаг 2. Добавьте на свою веб-страницу следующую настройку ScriptManager: AsyncPostBackTimeout ="360000"
Это решит вашу проблему.
Это можно настроить, изменив время ожидания ASP script в 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;
Надеюсь, у вас есть решение!