как вызвать ответ.Перенаправление после ответа.TransmitFile
как мы можем вызвать response. redirect после ответа.TrsnsmitFile
Prasad Khandekar
Привет,
К сожалению, вы не можете вызвать перенаправление после TransmitFile. Согласно документации MSDN для ответа.Redirect (string url), он вызовет исключение HttpException, когда "перенаправление будет предпринято после отправки HTTP-заголовков". С Момента Ответа.Перенаправление (string url) использует заголовок ответа Http "Location" (http://en.wikipedia.org/wiki/HTTP_headers#Responses), вызов его приведет к отправке заголовков клиенту. Это означает, что если вы вызовете его во второй раз или после того, как вы вызвали отправку заголовков каким-либо другим способом, вы получите исключение HttpException.
Вместо этого вы можете перенаправить его на страницу с тегом meta-refresh (http://en.wikipedia.org/wiki/Meta_refresh) в разделе<head></head & gt;, указывая на url-адрес загрузки. Таким образом, перенаправленная страница сначала появится в браузере, а затем через некоторое время файл будет загружен.
например, & lt;meta http-equiv= "refresh" content= "5; url=http: / / example. com / getFile? id=537373" >
С уважением,
mahakaal
Спасибо Прасаду за то, что вы поделились ценной информацией...
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Пожалуйста, проверьте мой ответ.
mahakaal
Тадит, спасибо, что ваше предложение сработало для меня ... но не поможете ли вы мне, если я попытаюсь решить ту же проблему с другим подходом?..
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Добро пожаловать. Итак, в чем же заключается другой подход? Объяснять.
mahakaal
на самом деле это не совсем другой подход. Правильно знаю, что я сохраняю pdf-файл, сгенерированный из crystal report, на своем сервере, а не отправляю его в браузер.. Могу ли я напрямую отправить pdf-файл в браузер, не сохраняя его?.
Ниже приведен мой код
использование системы;
использование системы.Коллекции.Общий;
использование System. Linq;
использование системы.Сеть;
используя системы.Веб.ИП;
используя системы.Веб.Пользовательского интерфейса.WebControls;
использование кристаллических решений.CrystalReports.Двигатель;
использование кристаллических решений.CrystalReports;
использование кристаллических решений.Общий;
использование кристаллических решений.Сеть;
использование кристаллических решений.Отчет;
использование кристаллических решений.ReportSource;
используя системы.Данных.Поставщики sqlclient;
использование системы.Конфигурация;
использование системы.Нарезание резьбы;
общественные частичное SaveJobCard класс : система.Веб.Пользовательского интерфейса.Страницы
{
protected void Page_Load(отправитель объекта, EventArgs e)
{
строка PDFName, temp;
если (запрос.QueryString ["jobid"].Метод toString() != "")
{
PDFName = Запрос.QueryString ["jobid"].Метод toString();
temp = PDFName;
PDFName=PDFName.Метод toString();
PDFName = Окружающая Среда.GetFolderPath(Environment.Специальная папка.Рабочий стол)+ " \ \ temp\\"+ PDFName +". pdf";
}
ещё
{
PDFName = " отчет";
}
использование (SqlConnection con = new SqlConnection())
{
против.ConnectionString = ConfigurationManager.ConnectionStrings ["dsd"].Параметр connectionString;
против.Открыть();
Команда sqlcommand команду cmd = новый sqlcommand, который();
УМК.Подключение = кон;
УМК.CommandText = " удалить с JobCard";
УМК.Метод executenonquery();
cmd.CommandText = "ВСТАВИТЬ INTO JobCard (jobno, job_name, Bill_noBill, job_type, Department, login_date, dispatch_dateTime, dmode, company_name, Client_department, contact_person, contact_no, Email_id, Delivery_addl1, Delivery_addl2, Delivery_addate_PDate_Data_, Delivery_addl2, Delivery_addate_PDate_Description , PO_No, Paper_type, Paper_size, Grammage, qty, LPrint_Remark, lBind_Remark, LDispatch_Remark, отправлено, доставлено, challan_ready, SONo, acc_remarks, challan_no, Tran_Id, guid, printdoneby, login_donetime, DOCTINDONE , Cordinator_PrintingRemark, Dispatch_done_remark, Delivery_done_remark, Need_Form38, изменять, consulted_person, C_media, Modification_remark, old_dispatch_date, переполнение, PendingFromBinding, PendingFromPrinting, PendingFromChallan, BindingDoneRemarks, PrintingDoneRemarks, ItemRate, TotalAmount) ВЫБРАТЬ jobno, job_name, Bill_noBill, job_type, отдел, login_date, dispatch_dateTime, dmode, company_name, Client_department, contact_person, contact_no, Email_id, D elivery_addl1, Delivery_addl2, Delivery_addl3, Delivery_City, Delivery_State, Delivery_Pin, PMethod, PO_Date, PO_No, Paper_type, Paper_size, Grammage, qty, LPrint_Remark, lBind_Remark, LDispatch_Remark, отправлено, маркировка_отправки, отправлено printdonetime, bindingdonetime, bindingdoneby, loginby, Diff_Location, DLocation_path, Проверьте, Binding_remark, Cordinator_PrintingRemark, Dispatch_done_remark, Delivery_done_remark, Need_Form38, модифицируют, consulted_person, C_media, Modification_remark, old_dispatch_date, переполнение, PendingFromBinding, PendingFromPrinting, PendingFromChallan, BindingDoneRemarks, PrintingDoneRemarks, ItemRate, TotalAmount ОТ логин, где JobNo = '"+ Request.QueryString [" jobid "]. ToString () +"' ";
УМК.Метод executenonquery();
УМК.Располагать();
против.Закрывать();
}
Документе printJ = новая документе();
// строке filename = "тест.РПТ";
//Session ["file"] = " yes";
printJ.Загрузить(Сервер.MapPath ("JobCard.rpt"));
printJ.SetDatabaseLogon("СА", "покраснели@1234", "192.168.1.7", "DispatchStatus");
printJ.Обновить();
ExportOptions CrExportOptions;
DiskFileDestinationOptions CrDiskFileDestinationOptions = новые DiskFileDestinationOptions();
PdfRtfWordFormatOptions CrFormatTypeOptions = новые PdfRtfWordFormatOptions();
CrDiskFileDestinationOptions.DiskFileName
mahakaal
= PDFName;
CrExportOptions = printJ. ExportOptions;
CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;
CrExportOptions.FormatOptions = CrFormatTypeOptions;
printJ. Export(CrExportOptions);
printJ.Распоряжаться();
printJ.Рядом();
СБОРЩИК МУСОРА.Собирать();
Ответ.ContentType = " приложение / pdf";
Ответ.AddHeader ("Refresh", " 3; url=joblogin.aspx");
Ответ.AppendHeader ("Content-Disposition","attachment; filename=" +Request.QueryString ["jobid"].ToString ()+". pdf");
Ответ.TransmitFile(PDFName);
}
}
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Измените расположение содержимого на встроенное вместо вложения.