Tôi phải thực hiện xuất GEDCOM trong trang web của mình.Response.TransmitFile và xóa nó sau khi truyền
Mã .net của tôi đã tạo một tệp tại máy chủ khi xuất sang gedcom được nhấp.
Sau đó, tôi cần tải nó xuống máy khách từ máy chủ, cũng như người dùng nên được hỏi nơi lưu tệp đó, nghĩa là cần phải lưu lại.
Sau khi tải xuống, tôi muốn xóa tệp đó khỏi máy chủ.
Tôi có một mã để truyền tải tập tin từ máy chủ cho khách hàng:
Response.ContentType = "text/xml";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
Response.TransmitFile(Server.MapPath("~/" + FileName));
Response.End();
từ này LINK
nhưng tôi không thể để xóa các tập tin sau khi mã này như Response.End
kết thúc phản ứng vì vậy bất cứ mã bằng văn bản sau khi dòng đó không được thực hiện.
Nếu tôi thực hiện mã để xóa tệp trước Response.End();
thì tệp không được truyền và tôi gặp lỗi.
Response.Flush gì và Response.End nào ?? xin vui lòng cho tôi biết sự khác biệt? – Radhi
Response.Flush lực lượng ra bất kỳ đầu ra đệm (nếu có) nhưng không ném ThreadAbortException - phản ứng vẫn còn trong tiến trình. Response.End flushes nhưng sau đó ném một ThreadAbortException mà không thể dừng lại. Đặt mã xóa trong khối Cuối cùng đảm bảo rằng nó sẽ chạy bất kể kết quả là gì. – Josh
Thao tác này không xử lý được tình huống khi người dùng nhấp vào Hủy trong hộp thoại tải xuống tệp. Khi điều đó xảy ra một HttpException được ném với thông báo "Máy chủ từ xa đã đóng kết nối. Mã lỗi là 0x800703E3." sau đó trong khối cuối cùng xóa không thành công với một IOException - "Quá trình không thể truy cập tập tin 'C: \ Windows \ TEMP \ tmp5CA3.tmp' bởi vì nó đang được sử dụng bởi một quá trình khác." Tôi thêm một catch (HttpException) và được gọi là Response.End() bên trong catch và làm việc cho tôi – Colin