【问题标题】:Classic ASP Method Not Working When Moved From Win2003 To Win2008 IIS7?从 Win2003 迁移到 Win2008 IIS7 时,经典 ASP 方法不起作用?
【发布时间】:2010-11-29 15:39:08
【问题描述】:

我刚刚将一个旧的经典 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 机器上完美运行 :(

【问题讨论】:

  • Chrome 给我这个错误信息:找不到文件或目录。

标签: iis-7 vbscript asp-classic windows-server-2008


【解决方案1】:

我正要问一个类似的问题,但 @stealthyninja 用他精简的测试代码让我走上了正轨。

在我的情况下,我的文件中的罪魁祸首原来是这样的:

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

一旦我评论了这条线,一切都很好,这让我找到了this SO question about content-length,它帮助我找到了真正的问题。

【讨论】:

    【解决方案2】:

    @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
    

    【讨论】:

    • 我以为就是这样,但我添加了这个 MIME 类型并尝试了其他方法,包括更改要返回的文件扩展名,但仍然得到相同的错误! :(
    • 似乎它不喜欢这样的东西!稍后我会发布更多代码 - 感谢您的提示
    【解决方案3】:

    【讨论】:

    • 谢谢,但我已经完成了第一个链接中的所有内容?这就是为什么我有点困惑......
    【解决方案4】:

    生成 CSV 文件的脚本的文件类型扩展名是什么?

    IIS 不会为未注册 MIME 类型的文件类型提供服务,而是返回 404

    另外,正如stealthyninja 所说,如果application/text MIME 类型没有被映射,那么 IIS 也不会提供文件

    刚刚在我的 Windows Server 2008 开发机器上检查了我的 IIS7 实例,据我所知,它没有默认注册的应用程序/文本。

    【讨论】:

    • 我很困惑...我更改了代码以返回一个 MIME 类型为“text/plain”的 .txt 文件,该文件已注册。然后我将 .asp 映射到“text/plain”的 MIME,因为这是上面代码所在的文件扩展名。但我仍然遇到同样的错误?
    • 除非您在代码中将内容类型设置为application/text,但默认情况下仍不是向 IIS 注册的 MIME 类型
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多