asp.net enquanto o processamento da primeira solicitação permite a segunda solicitação ao clicar
No aplicativo Asp.net Web Form, tenho o botão Gerar relatório e um botão Cancelar para cancelar o processo de geração de relatórios, se demorar muito.
Quando clico em Gerar relatório, ele executa a tarefa pesada, depois de 3 segundos, tento cancelar essa tarefa pesada clicando no botão Cancelar.
Mas o código do lado do servidor para o clique no botão Cancelar é chamado após algum tempo.
Eu até tenteiwindow.stop()
noJavaScript
para interromper o carregamento da página e pressionar o código do servidor rapidamente, mas ainda assim, existe um atraso.
Código:
protected void btnExportExcel_Click(object sender, EventArgs e)
{
// Doing Heavy Task to Generate Report
}
protected void btnCancel_Click(object sender, EventArgs e)
{
if (Response.IsClientConnected)
{
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
}
<asp:Button ID="btnCancel" runat="server" Text="Cancel Request"
OnClientClick="return StopPageLoading();" OnClick="btnCancel_Click" />
function StopPageLoading() {
try
{
window.stop();
} catch (exception)
{
document.execCommand('Stop'); // for IE and other browsers
}
}
Como posso permitir iniciar outra solicitação com um clique rápido, enquanto a solicitação atual está em processamento?
Como permitirUI
ser responsivo?
Atualizar:
Para reproduzir a situação:
Clico em Exportar para o Excel, leva 7 minutos para processar.Enquanto ainda estou processando, clico no botão Cancelar, leva mais 5 minutos para cancelar.Eu li queSolicitação simultânea não é possível no Asp.NET porque o estado da sessão cria bloqueios exclusivos.
Então, como cancelar rapidamente?
Vai fazer meus métodosasync
ajudar a superar o problema de bloqueios exclusivos do estado da sessão?