Problemy z Response.TransmitFile, Response.End i IE
Zajmuję się tworzeniem aplikacji ASP.NET, która w pewnym momencie wysyła plik do użytkownika za pomocą Response.TransmitFile.
Działa dobrze na moim komputerze dev, a kiedy wdrażam go na serwerach testowych, nadal działa na dwóch z nich; na jednym z serwerów (W2K3) działa tylko na Firefoksie, kiedy próbuję na IE7, pojawia się komunikat o błędzie „Internet Explorer nie może otworzyć pliku sendfile.aspx on (nazwa serwera)”.
Stworzyłem małą stronę aspx inline, aby powtórzyć problem, tutaj jest:
<%@ Page Language="C#" %>
<html><head>
<script language="CS" runat="server">
void Page_Load(object sender, System.EventArgs e)
{
string filePath = @"C:\temp\export.zip";
Response.ClearHeaders();
Response.ContentType = "application/zip";
Response.Clear();
Response.AppendHeader("Content-disposition", "attachment; filename=export.zip");
Response.TransmitFile(filePath);
Response.End();
}
</script>
</head></html>
Próbowałem różnych rzeczy i zauważyłem, że to działa ponownie, jeśli skomentujęResponse.End
line (ale AFAIK ta linia powinna tam być, przynajmniej według każdego przykładowego kodu znajdującego się w sieci)
Kolejną kwestią, którą zauważyłem, a która może, ale nie musi być powiązana, jest to, że również nie powiedzie się, jeśli usunę<html>, <head>
i jego zamykające znaczniki.
Od jakiegoś czasu drapam się po głowie, czy ktoś ma jakiś pomysł, jak to zrobić?