2008-10-01 22 views
47

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

Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerTimeoutException: The server request timed out.

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

Respuesta

83

Hay una propiedad en el ScriptManager:

AsyncPostBackTimeout="300" 
+1

Gracias. Esto solo vino en ayuda para mí. – David

+2

¿dónde debería agregarse esto? lado del servidor/lado del cliente, cualquier explicación adicional sería muy apreciada. –

+0

Duplicar los segundos permitidos antes del tiempo de espera configurando AsynchPostBackTimeout = "180" funcionó muy bien para mi solución. – landsteven

2

Esto podría ser configurable al cambiar 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, luego en la pestaña de opciones.

o configúrelo estableciendo la propiedad Server.ScriptTimeout.

+0

Server.ScriptTimeout es para la secuencia de comandos normal o para la asincrónica? –

+0

Script normal, no script asíncrono. – Bravax

11

Esto hizo el truco (básicamente haciendo caso omiso de 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> 
+0

Recibo el error con el código anterior. 'ReferenceError: Sys no está definido' –

1

Bueno, supongo que eso funcionaría si lo que desea el solicitud descartada con el potencial de que nunca se ejecutó 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 también pueden ser infinito en el tiempo de Internet.

37

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 el Contenido, que tenía que tener acceso al objeto en el archivo aspx.cs del Contenido:

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

Hola @narayan ¿esto también funcionará para 'RadScriptManager'? –

+0

@NagibMahfuz, lamentablemente no tengo los medios para probar RadScriptManager, así que no puedo responder definitivamente. Si alguna vez lo intentas, cuéntanos cómo funcionó. – narayan

+1

sí, también funciona para 'RadScriptManager'. –

4

Por favor, siga los siguientes pasos:

Paso 1: En web.config, establecer httpRuntime maxRequestLength="1024000" executionTimeout="999999"

Paso 2: Añadir la siguiente configuración al de su página web ScriptManager: AsyncPostBackTimeout ="360000"

Esto va a resolver su problema.

0

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. Por lo tanto, necesita aumentar la propiedad ConnectionTimeout.

Puede 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á para 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 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. Se puede poner en AsyncPostBackTimeout="6000".aspx página

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

    command.CommandTimeout = 30*1000; 
    

Esperanza usted tiene una solución!

Cuestiones relacionadas