我正在使用经典asp编码的客户端网站,其中iis 7.5和终端服务器上安装了windows server 2008 r2。我遇到的问题是当用户尝试下载jpg文件时。代码很好,并且在更改服务器之前工作正常,但现在当您单击下载链接时,您将获得以下页面之一:
The connection was reset ( Firefox)
Connection closed by remote server ( Opera )
Internet Explorer cannot display the webpage ( ie )
只有在尝试从这些页面下载文件时才会发生这种情况,所有其他页面都按预期工作。我完全难以理解这个问题可能是什么,我已经花了好几个小时来浏览论坛和我能想到的任何事情。我猜这更像是一个后端配置问题,但我并不积极,也不知道需要改变什么才能让它再次运行。
答案 0 :(得分:0)
可能存在任何问题。我建议运行Fiddler的副本以查看是否存在响应错误代码。
由于这是经典的asp,因此请检查代码中是否存在可能隐藏错误的内容。
这将是on error resume next
。使用粗略的调试技术(如response.write "got here"
)或写入日志文件,通过代码查看停止的位置。
它可能根本不是IIS。我的猜测是文件许可问题。
要审核的其他链接:
How to guide for getting a classic asp application working under IIS 7.0
答案 1 :(得分:0)
此代码适用于iis 7.5 win2k8r2:
Sub s_getFile(sPath, sfilename, sBaseName)
Response.Buffer = False
Server.ScriptTimeout = 30000
Response.ContentType = "application/x-unknown"
Response.AddHeader "Content-Disposition", "attachment; filename=" & sfilename
Set adoStream = CreateObject("ADODB.Stream")
adoStream.Open()
adoStream.Type = 1
adoStream.LoadFromFile(sPath & "\" & sBaseName)
iSz = adoStream.Size
可能需要 Response.AddHeader "Content-Length", iSz
chunk = 2048
For i = 1 To iSz \ chunk
If Not Response.IsClientConnected Then Exit For
Response.BinaryWrite adoStream.Read(chunk)
Next
If iSz Mod chunk > 0 Then
If Response.IsClientConnected Then
Response.BinaryWrite adoStream.Read(iSz Mod chunk)
End If
End If
adoStream.Close
Set adoStream = Nothing
Response.End
End Sub