Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.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# 下载文件-在第一次下载完成之前防止第二次下载_C#_Asp.net_Download - Fatal编程技术网

C# 下载文件-在第一次下载完成之前防止第二次下载

C# 下载文件-在第一次下载完成之前防止第二次下载,c#,asp.net,download,C#,Asp.net,Download,我的ASP.NET项目中有下载代码功能,下载代码如下所示 public class Download : IHttpHandler { private void DownloadPsListingProduct(Guid which) { string path = GetFilePathFromGuid(which); FileInfo file = new FileInfo(path); HttpResponse re

我的ASP.NET项目中有下载代码功能,下载代码如下所示

public class Download : IHttpHandler
{    
    private void DownloadPsListingProduct(Guid which)
    {
        string path = GetFilePathFromGuid(which);

        FileInfo file = new FileInfo(path);
        HttpResponse response = HttpContext.Current.Response;        
        response.ClearContent();
        response.Clear();

        response.ContentType = "application/octet-stream";        
        response.AddHeader("Content-Disposition",
                           "attachment;filename=\"" + file.Name.NeutralizationCrlfSequences() + "\";");

        response.TransmitFile(file.FullName);
        response.Flush();
        response.End();

    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}
当我一次下载一个文件时,这段代码非常有用。 但当一个文件正在下载过程中,我请求下载另一个文件时,它首先等待第一个文件下载完成,然后开始第二个文件下载

注意:我正在发送下载每个文件的新请求


我希望避免这种单一文件下载行为,用户应该能够在不等待前一个文件完成的情况下下载文件。

ASP.NET Web API 2应该能够轻松处理此问题。有一个例子,但我将重复重要部分:

public class FilesController : ApiController
{
    public IHttpActionResult(Guid fileId)
    {
        var filePath = GetFilePathFromGuid(fileId);
        var fileName = Path.GetFileName(filePath);
        var mimeType = MimeMapping.GetMimeMappting(fileName);
        return OkFileDownloadResult(filePath, mimeType, fileName, this);
    }
}

当然,在ASP.NET Web API 2中连接路由等与连接
IHttpHandler
有很大的不同,但是在internet上也有很多关于如何开始的示例(包括这里的示例)。

您想要一次一个文件的行为吗,或者你是在试图避免它?@TomasLycken我是在试图避免它。如果你的处理程序被标记为需要会话状态,我可能会有这种行为,但这里的情况似乎不是这样。这是真正的密码吗?@Damien_不信者这个密码从一开始就存在,在stackoverflow上我们可以找到这个密码。但是我需要一些更好的方法来解决这个问题。您是否被限制使用
IHttpHandler
s,或者您是否可以使用WebAPI控制器来实现它?我有一个ASP.NET项目。我必须创建单独的Web API项目吗?或者我可以在同一个ASP.NET网站上使用URLEWRITE?@imlim,您应该能够毫无问题地将Web API控制器添加到您的网站项目中。一定要看一下文档-那里有很多指南: