Мой сценарий: мне нужно загрузить файл с сервера на рабочий стол клиента. Приведенный ниже код отлично работает для загрузки файла и не выдает ошибку «Поток прерван». Но мой клиентский счетчик продолжает работать бесконечно.
код для скачивания:
try
{
FileInfo file = new FileInfo(uriPath);
if (file.Exists)
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());
HttpContext.Current.Response.ContentType = "text/plain";
HttpContext.Current.Response.TransmitFile(file.FullName);
HttpContext.Current.Response.Flush(); // Sends all currently buffered output to the client.
HttpContext.Current.Response.SuppressContent = true; // Gets or sets a value indicating whether to send HTTP content to the client.
HttpContext.Current.ApplicationInstance.CompleteRequest(); //
}
}
catch (ThreadAbortException e)
{
//this is special for the Response.end exception
return 0;
}
catch (Exception exception)
{
logger.Error(exception.ToString());
}
Клиентский спиннер:
<asp:Button ID="BtnRemoveAll" Visible="False" runat="server" OnClick="RemoveAll_Click" OnClientClick="ShowWheel()" Text="Remove All"/>
<asp:UpdatePanel runat="server">
<ContentTemplate>
<div id="processMessage" style="display:none; width:100%; height:100%; overflow: auto; position:fixed; left:0%; top:0%; background-color: rgba(255, 255, 255, 0.8); z-index: 3;">
<div style="margin-left:50%; margin-top:25%; ">
<img alt="Loading" src="../Content/image/806.gif" style="position:center; left:50%; top:0%;"/><br /><br />
Please Wait...
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<script>
function ShowWheel() {
document.getElementById("processMessage").style.display = "block";
modal.style.display = "none";
}
</script>