Я делаю запрос от UpdatePanel, который занимает более 90 секунд. Я получаю эту ошибку тайм-аута:
Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerTimeoutException: The server request timed out.
Кто-нибудь знает, есть ли способ увеличить время до истечения времени ожидания вызова?





Это можно настроить, изменив время ожидания сценария ASP в IIS.
Он находится в свойствах вашего веб-сайта, виртуальном каталоге, кнопке конфигурации, а затем на вкладке параметров.
или установите его, задав свойство Server.ScriptTimeout.
Обычный сценарий, а не асинхронный сценарий.
Это помогло (в основном просто игнорирование всех таймаутов):
<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>
Я получаю сообщение об ошибке с приведенным выше кодом. ReferenceError: Sys is not defined
В ScriptManager есть свойство, позволяющее установить время ожидания в секундах. Значение по умолчанию - 90 секунд.
AsyncPostBackTimeout = "300"
где это нужно добавить? на стороне сервера / на стороне клиента, любые дальнейшие объяснения будут очень признательны.
Удвоение разрешенных секунд до тайм-аута путем установки AsynchPostBackTimeout = "180" отлично подходит для моего решения.
@owengerig это свойство нужно добавить в ваш ScriptManager
@owengerig: это свойство ScriptManager, поэтому его можно добавить на стороне клиента, но если вы хотите быть динамичным, вы также можете получить к нему доступ со стороны сервера, используя идентификатор ScriptManager, например sc1.AsyncPostBackTimeout = "300"
Что ж, я полагаю, это сработает, если вы просто хотите, чтобы запрос был отброшен с вероятностью того, что он никогда не будет выполнен полностью ...
Добавьте свойство AsyncPostBackTimeOut в тег ScriptManager, чтобы изменить время ожидания по умолчанию с 90 секунд на более разумное для вашего приложения.
Кроме того, попробуйте изменить веб-службу, принимающую вызов, чтобы она работала быстрее. 90 секунд также могут быть бесконечностью в интернет-времени.
В моем случае объект ScriptManager был создан в файле главной страницы, который затем использовался совместно с файлами страницы содержимого. Итак, чтобы изменить свойство ScriptManager.AsyncPostBackTimeout на странице содержимого, мне пришлось получить доступ к объекту в файле aspx.cs страницы содержимого:
protected void Page_Load(object sender, EventArgs e)
{
. . .
ScriptManager _scriptMan = ScriptManager.GetCurrent(this);
_scriptMan.AsyncPostBackTimeout = 36000;
}
Привет, @narayan, будет ли это работать и для RadScriptManager?
@NagibMahfuz, к сожалению, у меня нет возможности опробовать RadScriptManager, поэтому я не могу ответить однозначно. Если вы когда-нибудь попробуете это сделать, дайте нам знать, как это сработало.
Пожалуйста, следуйте инструкциям ниже:
Шаг 1: В web.config установите httpRuntime maxRequestLength = "1024000" executionTimeout = "999999"
Шаг 2. Добавьте следующий параметр в ScriptManager своей веб-страницы: AsyncPostBackTimeout = "360000"
Это решит вашу проблему.
Проблема, с которой вы сталкиваетесь, заключается в том, что ваше приложение истекает тайм-аут на запрос к базе данных 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;
Надеюсь, у вас есть решение!
Server.ScriptTimeout предназначен для обычного сценария или для асинхронного?