0

我知道还有其他关于此的主题,但没有任何效果。

在我的网页中,我允许下载一些配置文件

我正在使用这段代码:

public ActionResult DownloadConfigurationFiles()
{
    var stream = this.HttpContext.GetSessionObj<byte[]>((int)WebVariable.ConfigurationFilesStream);
    if (stream == null)
    {
        return HttpNotFound();
    }

    this.HttpContext.ClearSessionObj((int)WebVariable.ConfigurationFilesStream);
    return File(stream, "application/x-7z-compressed", "ConfigurationFiles.7z"); // octet-stream
}

它第一次完美运行,当我几秒钟后再次尝试时,我下载了 7z 文件,但是当我想打开它时,出现此错误:

在此处输入图像描述

当我进入代码时,它总是与第一次尝试成功时相同...所以我不知道为什么我的存档已损坏..?有什么方法可以验证我们构建的档案是有效的 7z 文件吗?

4

1 回答 1

1

http://msdn.microsoft.com/en-us/magazine/cc301755.aspx

看起来像数组 - 引用类型,例如,您应该将字节复制到流中,然后才删除您的会话对象。

public ActionResult DownloadConfigurationFiles()
{
    var bytes = this.HttpContext.GetSessionObj<byte[]>(idx_here);

    if (bytes != null) // check existance
    {
         var target = new MemoryStream(bytes); // <-- don't use USING!

         this.HttpContext.ClearSessionObj(idx_here);

         return File(target, mime, file_name);
    }

    return HttpNotFound();
}

认为它有帮助。

于 2013-10-16T13:37:35.497 回答