ASP.NET UpdatePanel Time Out
-
03-07-2019 - |
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?
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:
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 emweb.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>
Você pode colocar
AsyncPostBackTimeout="6000"
dentro.aspx
página<asp:ToolkitScriptManager runat="server" AsyncPostBackTimeOut="6000"> </asp:ToolkitScriptManager>
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!