【问题标题】:Asp.net http handler text file download issue. Works fine for codebehinedAsp.net http 处理程序文本文件下载问题。适用于代码隐藏
【发布时间】:2011-12-01 23:14:05
【问题描述】:

最近我们遇到了使用 C# 4.0 开发的文件下载 http 处理程序的奇怪问题。

Web 应用程序使用 ASP.NET 4.0 开发并托管在 IIS 7.0 over ssl 上。它工作正常。但最近由于配置或网站的其他一些变化,我们面临下面列出的问题。

当我们下载文本文件时,它会发出垃圾数据。如果我在 aspx 页面上使用代码而不是处理程序,则相同的文件可以正常工作。两者都有相同的代码。一些文件工作正常。例如图像文件或 pdf 文件工作正常。但是对于文本文件,行为非常不一致。空白文本文件工作正常。我尝试比较两个响应(handler vs codebehind),似乎返回的内容长度不一样。

    context.Response.Clear();
    context.Response.ClearHeaders();
    context.Response.ClearContent();
    context.Response.ContentType = !String.IsNullOrEmpty(mime) ?     mime : "application/octet-stream";
    context.Response.AppendHeader("Content-Disposition", String.Format("attachment; filename={0}", fileName));
    //context.Response.AppendHeader("Content-Length", buffer.Length.ToString());
    context.Response.OutputStream.Write(buffer, 0, buffer.Length);
    context.Response.End();

代码隐藏

HTTP/1.1 200 OK 服务器:ASP.NET Development Server/10.0.0.0 日期:周四, 2011 年 10 月 6 日 02:52:26 GMT X-AspNet-版本:4.0.30319 内容处置:附件;文件名=我的 junk.txt 缓存控制: 私有内容类型:文本/纯内容长度:29 连接:关闭

这只是样品测试

HTTPHANDLER

HTTP/1.1 200 OK 服务器:ASP.NET Development Server/10.0.0.0 日期:周四, 2011 年 10 月 6 日 02:54:04 GMT X-AspNet-版本:4.0.30319 内容处置:附件;文件名=我的 junk.txt 缓存控制: 私有内容类型:文本/纯内容长度:146 连接:关闭

��������I�%&/m�{J�J��t��$ؐ@������iG#)���eVe]f@�흼��{���{���;� N'����?\fdl��J�ɞ!���?~|?"�yѤ��N�l��͛6������ ������I� ��

【问题讨论】:

    标签: asp.net download httphandler


    【解决方案1】:

    尝试使用AddHeader() 代替AppendHeader() 并在context.Response.End() 语句之前调用Flush()

    【讨论】:

      【解决方案2】:

      您可能想要做的另一件事是用引号将文件名括起来。当文件名中有逗号并认为有重复的响应头时,Chrome/Opera 无法正确处理此代码。

      context.Response.AddHeader("Content-disposition", string.Format("attachment; filename=\"{0}\""), fileName);
      

      有关详细信息,请参阅 hereherehere

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-02
        • 2015-02-06
        • 2015-09-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多