Я изо всех сил пытаюсь понять суть проблемы, поэтому примите мои извинения, если вопрос нечеткий. Я запускаю классическое приложение asp в IIS7, и, похоже, все работает нормально, за исключением одной проблемы, которая меня озадачила.
По сути, файлы можно загружать с сервера, что выполняется с помощью метода sendBinary компонента Persits ASP Upload. Этот компонент отлично работает для загрузки и т. Д. Это просто загрузка у меня проблема.
Странно то, что у меня не может быть чистой asp-страницы, обслуживающей двоичный файл. Во II6 все работает нормально, но во II7 есть странная проблема. Например, это не работает.
<%
SET objUpload = server.createObject("Persits.Upload")
objUpload.sendBinary "D:\sites\file.pdf", true, "application/octet-binary", true
SET objUpload = NOTHING
%>
Однако, если я помещаю что-нибудь перед кодом asp, файл обслуживается нормально.
serve this
<%
SET objUpload = server.createObject("Persits.Upload")
objUpload.sendBinary "D:\sites\file.pdf", true, "application/octet-binary", true
SET objUpload = NOTHING
%>
Я также могу сначала написать что-нибудь в поток ответов, и он отлично работает.
<%
Response.Write("server this")
SET objUpload = server.createObject("Persits.Upload")
objUpload.sendBinary "D:\sites\file.pdf", true, "application/octet-binary", true
SET objUpload = NOTHING
%>
Есть ли у кого-нибудь идеи о том, что может быть причиной этого, или кто-нибудь сталкивался с подобной ситуацией? Я уверен, что это как-то связано с настройкой в IIS 7.
Это известная проблема с IIS7.5 (Windows 2008). Теперь у меня по умолчанию используется "фрагментированная кодировка", и вы больше не можете отправлять заголовок "длина содержимого".
Persits aspupload устанавливает его, когда вы передаете "true" для второго параметра.
Я не уверен, почему MSFT не исправила эту ошибку.
Вы можете найти обходной путь по адресу: http://support.persits.com/show.asp?code=PS100721176