Классический метод ASP не работает при переходе с Win2003 на Win2008 IIS7? - PullRequest
2 голосов
/ 29 ноября 2010

Я только что переместил старый классический сайт ASP из коробки win2003 IIS6 в коробку Win2008R2 IIS7, все отлично работает, кроме одной вещи.

У меня был небольшой метод, который позволял бы пользователю загружать CSV заказов, метод ниже:

sub DownloadOrders()
Response.clear
'Send headers for file name and content type changes
Response.AddHeader "Content-Disposition", "attachment; filename=orders.csv"
Response.ContentType = "application/text"

for I = 0 to ubound(theorderslist,2)
if I = 0 then
Response.Write("Order No,Date,Name,Address,Town/City,Country,Sub Total,Tax,Shipping,Total,Status" & vbCrLf)
end if
    Response.Write("" & pOrderPrefix & "-" & theorderslist(0,I) & "," & theorderslist(3,I) & "," & theorderslist(5,I) & " " & theorderslist(7,I) & "," & Replace(theorderslist(8,I),","," ") & "," & Replace(theorderslist(12,I),","," ") & "," & theorderslist(13,I) & "," & theorderslist(14,I) & "," & theorderslist(15,I) & "," & theorderslist(16,I) & "," & theorderslist(4,I) & "," & orderStatusDesc(theorderslist(10,I)) & vbCrLf)
next
Response.End
end sub

Теперь, если я нажму на ссылку, все, что я получу, это ошибка 404? Я даже дал каталогу полное разрешение на изменение, но все равно не повезло? Есть идеи, что еще я могу попробовать?

Как указано выше, это прекрасно работает на коробке Win2003 в течение многих лет: (

Ответы [ 4 ]

1 голос
/ 29 июня 2015

Я собирался задать аналогичный вопрос, но @stealthyninja поставил меня на правильный путь с его урезанным тестовым кодом.

В моем случае виновник в моем файле оказался таким:

Response.AddHeader "Content-Length", objFile.Size

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

0 голосов
/ 29 ноября 2010

@ leen3o: Похоже, тип application/text MIME не был определен в IIS.В это руководство включено то, как вы можете добавить его вручную: http://www.iis.net/ConfigReference/system.webServer/staticContent/mimeMap

Обновление

Сохраните следующую урезанную копию вашей Sub до testcsv.asp внеправильно работающий сервер и доступ к нему напрямую.Если файл CSV создается без ошибок, то, что когда-либо не нравится IIS7, должно находиться в другом месте вашего кода, и вам нужно будет вставить немного больше, чтобы мы могли помочь вам отладить его.

Response.AddHeader "Content-Disposition", "attachment; filename=orders.csv"
Response.ContentType = "application/text"
Response.Write("Order No,Date,Name,Address,Town/City,Country,Sub Total,Tax,Shipping,Total,Status" & vbCrLf)
Response.End
0 голосов
/ 29 ноября 2010

Что такое расширение типа файла в скрипте, который создает файл CSV?

IIS не будет обслуживать типы файлов, для которых у него не зарегистрирован тип MIME, и вместо этого будет возвращать 404

Кроме того, как заявляет stealthyninja, если тип MIME application/text не сопоставлен, IIS также не будет обслуживать файл

Только что проверил мой экземпляр IIS7 на моем компьютере с Windows Server 2008 dev, и, насколько я вижу, приложение / текст не зарегистрированы по умолчанию.

0 голосов
/ 29 ноября 2010
...