C# 下载文件-在第一次下载完成之前防止第二次下载
我的ASP.NET项目中有下载代码功能,下载代码如下所示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
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控制器添加到您的网站项目中。一定要看一下文档-那里有很多指南: