Запись файла для пользователей, выдающих спорадическую ошибку в IE

У меня очень интересная проблема только с конкретными реализациями IE. У меня есть страница ASPX, которая используется для записи файлов пользователю, как часть процесса страница использует следующий код для записи файла пользователю.

Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=download" + System.IO.Path.GetExtension(oInfo.SupportingFilePath));
Response.ContentType = "application/octet-stream";
Response.WriteFile(Server.MapPath(oInfo.SupportingFilePath));
Response.End();

В 99,5% случаев это работает нормально, однако в некоторых редких случаях в IE только на определенных машинах пользователю предлагается загрузить страницу .aspx и / или выдается сообщение об ошибке.

Кто-нибудь имеет представление о том, что здесь происходит?


person Mitchel Sellers    schedule 17.11.2009    source источник


Ответы (2)


Согласно RFC2231 значения параметров заголовков MIME должны быть заключены в двойные кавычки: http://www.ietf.org/rfc/rfc2231.txt (стр. 3, если вам интересно). Это должно быть что-то вроде "вложение; имя файла =" "скачать" + System.IO.Path.GetExtension (oInfo.SupportingFilePath) + "" "");

person Alex Polkhovsky    schedule 17.11.2009

Хотя этого не должно происходить, потому что вы установили ContentType и content-disposition, я считаю, что встроенное в IE отслеживание / обработка MIME является причиной проблемы. Вот пара обходных решений / приемов, которые вы можете попробовать:

  • Добавьте расширение файла в строку запроса на странице .aspx, которая передает файл, т. Е. http://blahblahblah/page.aspx?.ext
  • Если вы используете IE 8, вы можете указать другой заголовок ответа для «nosniff», как указано в здесь.

У меня все еще возникают проблемы с этим, как описано здесь, но я надеюсь, что один из них поможет.

person AJ.    schedule 17.11.2009