Pregunta

Estoy haciendo una solicitud desde un UpdatePanel que toma más de 90 segundos. Estoy recibiendo este error de tiempo de espera:

  

Error de tiempo de ejecución de Microsoft JScript:   Sys.WebForms.PageRequestManagerTimeoutException: la solicitud del servidor   caducado.

¿Alguien sabe si hay una manera de aumentar la cantidad de tiempo antes de que se agote la llamada?

¿Fue útil?

Solución

Hay una propiedad en ScriptManager:

AsyncPostBackTimeout="300"

Otros consejos

En mi caso, el objeto ScriptManager se creó en un archivo de página maestra que luego se compartió con los archivos de la página de contenido. Así que para cambiar la propiedad ScriptManager.AsyncPostBackTimeout en la Página de contenido, tuve que acceder al objeto en el archivo aspx.cs de la Página de contenido:

protected void Page_Load(object sender, EventArgs e)
{
     . . . 
     ScriptManager _scriptMan = ScriptManager.GetCurrent(this);
     _scriptMan.AsyncPostBackTimeout = 36000;
}

Esto hizo el truco (básicamente ignorando todos los tiempos de espera):

<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> 

Por favor, siga los pasos a continuación:

Paso 1: en web.config , establece httpRuntime maxRequestLength = " 1024000 " ecutionTimeout = " 999999 "

Paso 2: agrega la siguiente configuración al ScriptManager de tu página web: AsyncPostBackTimeout = " 360000 "

Esto resolverá tu problema.

Esto podría configurarse cambiando el tiempo de espera del script ASP en IIS.

Se encuentra en las propiedades de su sitio web, directorio virtual, botón de configuración, y luego en la pestaña de opciones.

o configúralo configurando la propiedad Server.ScriptTimeout.

Bueno, supongo que funcionaría si solo quieres que la solicitud se deseche con la posibilidad de que nunca se ejecute por completo ...

Agregue una propiedad AsyncPostBackTimeOut a la etiqueta ScriptManager para cambiar su tiempo de espera predeterminado de 90 segundos a algo más razonable para su aplicación.

Además, busque cambiar el servicio web que recibe la llamada para moverse más rápido. 90 segundos pueden ser infinitos en el tiempo de Internet.

El problema al que se enfrenta es cuando su aplicación se ejecuta en un tiempo de espera en una consulta de base de datos SQL. Se tarda más tiempo que el predeterminado para devolver la salida. Así que necesitas aumentar la propiedad ConnectionTimeout.

Puedes hacerlo de varias maneras:

  1. Una cadena de conexión tiene una propiedad ConnectionTimeout . Es una propiedad que determina la cantidad máxima de segundos que su código esperará a que se abra una conexión de la base de datos. Puede establecer el tiempo de espera de conexión en la sección de la cadena de conexión en 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>
    
  2. Puedes poner AsyncPostBackTimeout = " 6000 " en la página de .aspx

    <asp:ToolkitScriptManager runat="server" AsyncPostBackTimeOut="6000">
    </asp:ToolkitScriptManager>
    
  3. Puede establecer el tiempo de espera en SqlCommand , donde está llamando el procedimiento almacenado en el archivo .cs.

    command.CommandTimeout = 30*1000;
    

Espero que tengas una solución!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top