Pergunta

Estou fazendo um pedido de um UpdatePanel Isso leva mais de 90 segundos. Estou recebendo esse erro de tempo limite:

Microsoft JScript Runtime Erro: sys.webforms.pagerequestmanagertimeoutException: a solicitação do servidor cronometrou.

Alguém sabe se existe uma maneira de aumentar a quantidade de tempo antes do tempo de chamada?

Foi útil?

Solução

Há uma propriedade no scriptManager:

AsyncPostBackTimeout="300"

Outras dicas

No meu caso, o objeto ScriptManager foi criado em um arquivo de Página Master que foi compartilhado com os arquivos da página de conteúdo. Então, para alterar a propriedade ScriptManager.ASYNCPOSTBackTimeout na página de conteúdo, eu tive que acessar o objeto no arquivo ASPX.CS da página de conteúdo:

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

Isso fez o truque (basicamente apenas ignorando todos os tempos limite):

<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 os passos abaixo:

Etapa 1: em web.config, definir httpRuntime maxRequestLength="1024000" executionTimeout="999999"

Etapa 2: Adicione a seguinte configuração ao scriptManager da sua página da web: AsyncPostBackTimeout ="360000"

Isto irá resolver o seu problema.

Isso pode ser configurável alterando o tempo limite do script ASP no IIS.

Está localizado nas propriedades do seu site, diretório virtual, botão de configuração e na guia Opções.

ou defina -o configurando a propriedade Server.scriptTimeout.

Bem, suponho que isso funcionaria se você quiser apenas o pedido jogado com o potencial de que ele nunca foi executado completamente ...

Adicione uma propriedade AsyncPostBackTimeout à tag scriptManager para alterar seu tempo limite padrão de 90 segundos para algo mais razoável para o seu aplicativo.

Além disso, procure mudar o serviço da web que recebe a chamada para se mover mais rapidamente. 90 segundos também podem ser infinitos na internet.

O problema que você está enfrentando é quando seu aplicativo é executado em um tempo limite em uma consulta de banco de dados SQL. Está levando mais tempo do que o padrão para retornar a saída. Portanto, você precisa aumentar a propriedade ConnectionTimeout.

Você pode fazer isso de várias maneiras:

  1. Uma string de conexão tem um ConnectionTimeout propriedade. É uma propriedade que determina o número máximo de segundos que seu código aguarda para que uma conexão do banco de dados seja aberta. Você pode definir o tempo limite da conexão na seção String de conexão em 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. Você pode colocar AsyncPostBackTimeout="6000" dentro .aspx página

    <asp:ToolkitScriptManager runat="server" AsyncPostBackTimeOut="6000">
    </asp:ToolkitScriptManager>
    
  3. Você pode definir o tempo limite em SqlCommand, onde você está chamando o procedimento armazenado no arquivo .cs.

    command.CommandTimeout = 30*1000;
    

Espero que você tenha uma solução!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top