Ошибка ожидания запроса истекло при использовании метода DataAdapter в приложении ASP.NET
Эта статья поможет устранить проблему, из-за которой в веб-приложении ASP.NET возникает ошибка (время ожидания запроса).
Исходная версия продукта: ASP.NET
Исходный номер базы знаний: 825739
Симптомы
При использовании DataAdapter.Fill
метода или выполнении запроса в веб-приложении ASP.NET, на обработку в течение более 90 секунд может появиться следующее сообщение об ошибке:
HttpException (0x80004005): истекло время ожидания запроса.
Эта ошибка возникает только при запуске веб-приложения в режиме выпуска, а для атрибута Debug
в файлеweb.config задано значение false.
Причина
По умолчанию для атрибута executionTimeout
задано значение 90 секунд в файлеMachine.config . Эта ошибка возникает, когда время обработки превышает 90 секунд.
Обходной путь
Чтобы обойти эту проблему, увеличьте значение времени ожидания, установленное для атрибута executionTimeout
в файле конфигурации.
Атрибут executionTimeout
существует в <httpRequest>
файлеMachine.config . Эти параметры можно изменить либо в файлеweb.config , либо в файлеMachine.config . Значение по умолчанию для времени ожидания — 90 секунд. Атрибут executionTimeout
указывает максимальное количество секунд, разрешенное для выполнения запроса перед завершением работы веб-приложением ASP.NET.
Метод 1. Установка значения атрибута ExecutionTimeout в файле Web.config
Откройте файлweb.config в Блокноте.
<httpRuntime>
Добавьте элемент в<system.web>
раздел следующим образом:<configuration> <system.web> <httpRuntime executionTimeout="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" /> </system.web> </configuration>
Измените значение атрибута,
executionTimeout
чтобы избежать ошибок времени ожидания.Сохраните файлweb.config .
Метод 2. Задайте значение атрибута ExecutionTimeout в файле Machine.config
Откройте файлMachine.config в Блокноте. Файл Machine.config находится в каталоге
%SystemRoot%\Microsoft.NET\Framework\%VersionNumber%\CONFIG\
.В файлеMachine.config найдите
<httpRuntime>
элемент . Файл web.config находится в каталоге веб-приложения.<httpRuntime executionTimeout="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" />
Измените значение атрибута,
executionTimeout
чтобы избежать ошибок времени ожидания.Сохраните файлMachine.config .
Статус
Такое поведение является особенностью данного продукта.
Действия по воспроизведению поведения
Запустите Microsoft Visual Studio .NET.
В меню Файл выберите пункт Создать, а затем выберите Проект.
Выберите Проекты Visual Basic в разделе Типы проектов, а затем выберите ASP.NET веб-приложение в разделе Шаблоны. По умолчанию
WebForm1.aspx
создается .В режиме конструктора щелкните правой кнопкой мыши WebForm1 и выберите Пункт Просмотреть код.
Чтобы добавить подключение к базе данных и
DataAdapter
метод для заполнения набора данных, замените существующий код следующим кодом:Imports System.Data.SqlClient Public Class WebForm1 Inherits System.Web.UI.Page Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try Dim sConnectionString As String sConnectionString = "server=servername;uid=sa;pwd=password;database=testdatabase;" Dim objConn As SqlConnection objConn = New SqlConnection(sConnectionString) objConn.Open() Dim daAuthors As SqlDataAdapter 'Increase the no.of records from existing value, if execution time is less than 90 sec. daAuthors = New SqlDataAdapter("Select top 60000 * From timelog (nolock)", objConn) Dim myDs As DataSet myDs = New DataSet("testTimelog") Dim dt As DateTime dt = New DateTime() dt = dt.Now Response.Write("StartTime of DataAdapter fill - " + dt) daAuthors.Fill(myDs, "testTimelog") dt = New DateTime() dt = dt.Now Response.Write("<br>EndTime of DataAdapter fill - " + dt) Response.Write("<br>No of Rows = " + myDs.Tables(0).Rows.Count.ToString()) Catch ex As Exception Response.Write(ex.ToString()) End Try End Sub End Class
Откройте файл web.config в Блокноте, а затем задайте для атрибута
Debug
значение false , как показано ниже.<configuration> <system.web> <compilation defaultLanguage="vb" debug="false" /> </system.web> </configuration>
Настройте сборку приложения в режиме выпуска. Для этого выполните следующие действия:
- В Обозреватель решений щелкните проект правой кнопкой мыши.
- Выберите Свойства, а затем Configuration Manager.
- Выберите Выпуск в разделе Активная конфигурация решения, а затем нажмите кнопку Закрыть.
- Нажмите ОК.
В меню Отладка выберите Пуск , чтобы выполнить сборку и запуск проекта. Вы можете получить сообщение об ошибке, описано в разделе Симптомы .
Примечание.
Значение по умолчанию для времени ожидания, заданное в файлеMachine.config , равно 90 секундам. Если время процесса меньше 90 секунд, увеличьте время обработки, увеличив количество извлекаемых записей.
Ссылки
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по