Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我网站上的.7z存档已损坏:“;无法将文件作为存档文件打开。”;_C#_Asp.net_Asp.net Mvc_Download_7zip - Fatal编程技术网

C# 我网站上的.7z存档已损坏:“;无法将文件作为存档文件打开。”;

C# 我网站上的.7z存档已损坏:“;无法将文件作为存档文件打开。”;,c#,asp.net,asp.net-mvc,download,7zip,C#,Asp.net,Asp.net Mvc,Download,7zip,我知道还有其他的话题,但都没用 在我的网页中,我允许下载一些配置文件 我正在使用以下代码: public ActionResult DownloadConfigurationFiles() { var stream = this.HttpContext.GetSessionObj<byte[]>((int)WebVariable.ConfigurationFilesStream); if (stream == null) { return Ht

我知道还有其他的话题,但都没用

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

我正在使用以下代码:

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
}
public ActionResult下载配置文件()
{
var stream=this.HttpContext.GetSessionObj((int)WebVariable.configurationfilestream);
if(流==null)
{
返回HttpNotFound();
}
this.HttpContext.ClearSessionObj((int)WebVariable.configurationfilestream);
返回文件(流,“application/x-7z-compressed”,“ConfigurationFiles.7z”);//八位字节流
}
当我在几秒钟后再次尝试时,我下载了7z文件,但当我想打开它时,我出现了以下错误:

当我进入代码,它总是一样的第一次尝试时,它成功。。。所以我不知道为什么我的档案被破坏了。。?有没有办法验证我们构建的归档文件是否为有效的7z文件?

类似于数组引用类型,例如,您应该将字节复制到流中,然后删除会话对象

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();
}
public ActionResult下载配置文件()
{
var bytes=this.HttpContext.GetSessionObj(此处为idx_);
if(bytes!=null)//检查是否存在
{

var target=new MemoryStream(bytes);//7zip有一个“t”选项来测试文件的完整性。否则,您是否比较了两个文件的大小和/或内容以进行健全性检查?