TransmitFile продолжить с page_load efter Response.End
Я уже неделю ищу ответ и сдаюсь. Я создаю файл Excelfile и затем позволяю пользователю загрузить его на свой клиент с помощью TransmitFile. Дело в том, что это прекрасно работает большую часть времени, но в некоторых случаях (может повторяться), после Response.End, страница перезагружается и вызывается page_load. Флаг IsPostBack является ложным. Это поведение прерывает загрузку, и все приложение перестает работать, отображая подключение к серверу.
foreach (string filename in Directory.GetFiles(WebConfigurationManager.AppSettings.Get("EXCEL_PATH")))
{
if (File.GetLastWriteTime(filename) < (DateTime.Now.AddDays(-1)))
{
File.Delete(filename);
}
}
ClsOrderFormData ofData = new ClsOrderFormData(ddOrderTypes.SelectedValue, OF.Customer.CustomerCategory);
ClsExportOF xls = new ClsExportOF(OF.SizeDims, ofData, OF.Customer, Request.PhysicalApplicationPath, ClsPrintOrder.getOrderData().TheOrder.Articles);
string sFileName = xls.CreateExcelFile();
FileInfo OutFile = new FileInfo(WebConfigurationManager.AppSettings.Get("EXCEL_PATH") + sFileName);
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=Abacus_OF_" + ddOrderTypes.SelectedItem.Text + "_" + ddCustomer.SelectedItem.Text + "_" + DateTime.Now.ToShortDateString() + ".xls".Replace(',', '-'));
Response.ContentType = "application/vnd.ms-excel";
Response.TransmitFile(WebConfigurationManager.AppSettings.Get("EXCEL_PATH") + sFileName, 0, OutFile.Length);
Response.Flush();
Response.End();
Короче. Когда это работает, код больше не выполняется после Response.End(), как и ожидалось. Когда это не работает, продолжайте с page_load и так далее, и сайт зависает.
Какие-нибудь советы?
1 ответ
Попытка использовать HttpApplication.CompleteRequest вместо Response.End. Response.End, вероятно, вызывает исключение ThreadAbortException, которое портит процесс.
смотрите... http://ardalis.com/Use-HttpApplication.CompleteRequest-Instead-of-Response.End http://weblogs.asp.net/hajan/archive/2010/09/26/why-not-to -use-HttpResponse-близко и-HttpResponse-end.aspx