Error de tiempo de espera de solicitud cuando se usa el método DataAdapter en una ASP.NET aplicación
Este artículo le ayuda a resolver el problema en el que se produce un error (tiempo de espera de solicitud) en una ASP.NET web.
Versión del producto original: ASP.NET
Número KB original: 825739
Síntomas
Al usar el método o ejecutar una consulta en una aplicación web de ASP.NET que tarda más de 90 segundos en procesarse, puede recibir DataAdapter.Fill el siguiente mensaje de error:
HttpException (0x80004005): solicitud con tiempo de espera.
Este error se produce solo cuando se ejecuta la aplicación web en modo de versión y el valor del atributo en el archivoweb.configse Debug establece en false.
Causa
De forma predeterminada, el valor del executionTimeout atributo se establece en 90 segundos en el Machine.config archivo. Este error se produce cuando el tiempo de procesamiento supera los 90 segundos.
Solución alternativa
Para solucionar este problema, aumente el valor de tiempo de espera establecido para el executionTimeout atributo en el archivo de configuración.
El executionTimeout atributo existe en el archivo <httpRequest> Machine.config. Puede cambiar esta configuración en el archivo web.config o en el Machine.config archivo. El valor predeterminado para el tiempo de espera es 90 segundos. El atributo indica el número máximo de segundos que se puede ejecutar una solicitud antes de que la aplicación web ASP.NET executionTimeout cierre.
Método 1: Establecer el valor del atributo ExecutionTimeout en el Web.config archivo
Abra el web.config archivo en Bloc de notas.
Agregue el
<httpRuntime>elemento en la sección de la siguiente<system.web>manera:<configuration> <system.web> <httpRuntime executionTimeout="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" /> </system.web> </configuration>Modifique el valor del
executionTimeoutatributo para evitar errores de tiempo de espera.Guarde el web.config archivo.
Método 2: Establecer el valor del atributo ExecutionTimeout en el Machine.config archivo
Abra el Machine.config archivo en Bloc de notas. El Machine.config se encuentra en el
%SystemRoot%\Microsoft.NET\Framework\%VersionNumber%\CONFIG\directorio.En el Machine.config, busque el
<httpRuntime>elemento. El web.config se encuentra en el directorio aplicación web.<httpRuntime executionTimeout="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" />Modifique el valor del
executionTimeoutatributo para evitar errores de tiempo de espera.Guarde el Machine.config archivo.
Estado
Este comportamiento es una característica del diseño de la aplicación.
Pasos para reproducir el comportamiento
Inicie Microsoft Visual Studio .NET.
En el menú Archivo, elija Nuevo y, a continuación, seleccione Project.
Seleccione Visual Basic proyectos en tipos Project y, a continuación, seleccione ASP.NET aplicación web en Plantillas. De forma predeterminada,
WebForm1.aspxse crea.En la vista Diseño, haga clic con el botón secundario en WebForm1 y, a continuación, seleccione Ver código.
Para agregar la conexión de base de datos y el método para rellenar el conjunto de
DataAdapterdatos, reemplace el código existente por el siguiente código: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 ClassAbra el web.config en Bloc de notas y, a continuación, establezca el valor del
Debugatributo en false de la siguiente manera:<configuration> <system.web> <compilation defaultLanguage="vb" debug="false" /> </system.web> </configuration>Establece la aplicación para que se compile en modo de lanzamiento. Para ello, siga estos pasos:
- En el Explorador de soluciones, haga clic con el botón secundario en el proyecto.
- Seleccione Propiedades y, a continuación, Configuration Manager.
- Seleccione Liberar en Configuración de solución activa y, a continuación, seleccione Cerrar.
- Seleccione Aceptar.
En el menú Depurar, seleccione Inicio para compilar y ejecutar el proyecto. Es posible que reciba el mensaje de error que describe la sección Síntomas.
Nota
El valor predeterminado para el tiempo de espera establecido en el archivoMachine.config es 90 segundos. Si el tiempo de proceso es inferior a 90 segundos, aumente el tiempo de procesamiento aumentando el número de registros que se recuperarán.