我知道还有其他主题,但没有任何效果。
在我的网页中,我允许下载一些配置文件
我正在使用此代码:
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文件?
答案 0 :(得分: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();
}
认为这有帮助。