Нужно ли устанавливать Content-Length в моем заголовке ответа? - PullRequest
8 голосов
/ 11 сентября 2009

Я проверяю некоторый устаревший код и обнаружил ошибку, из-за которой ответ остается неопределенным.

Вот основная идея:

Response.Content-Type = "application/octet-stream"
Response.AddHeader("Content-Disposition", "attachment; filename" & someFileName)
Response.AddHeader("Content-Length", someStoredLength)
Response.BinaryWrite(someByteArray)
Response.Flush()
Response.End()

Проблема в том, что someStoredLength намного больше, чем фактический размер someByteArray, поэтому клиент просто сидит и ждет загрузки файла, а браузер просто вращается.

Я собираюсь просто удалить AddHeader, который определяет длину контента, потому что, когда я делаю это, кажется, все работает нормально, но я беспокоюсь, что я чего-то не понимаю.

Это нормально для меня, чтобы удалить этот AddHeader или я должен найти лучший способ справиться с этой проблемой?

Ответы [ 2 ]

10 голосов
/ 11 сентября 2009

Ваше приложение ДОЛЖНО (прокрутите вниз до Content-Length), но оно не обязательно.

Вот достойное обсуждение возможных вариантов.

8 голосов
/ 11 сентября 2009

Измените строку Content-Length на следующую:

Response.AddHeader("Content-Length", someByteArray.Length.ToString())
...