2017-02-15 2 views
2

Ich habe Download-Code-Funktionalität in meinem ASP.NET-Projekt und den Download-Code wie folgt aussehen.Datei herunterladen - zweiten Download verhindern, bis der erste fertig ist

Dieser Code funktioniert wie ein Charme, wenn ich einzelne Datei auf einmal herunterladen. Aber wenn eine Datei gerade heruntergeladen wird und ich eine andere Datei herunterladen möchte, warte ich zuerst auf den Abschluss des ersten Herunterladens der Datei und dann auf den zweiten Download der Datei.

Hinweis: Ich sende neue Anfrage zum Herunterladen jeder Datei.

Ich möchte dieses einzelne Datei Download-Verhalten zu vermeiden und Benutzer in der Lage sein, Dateien herunterzuladen, ohne vorherige zu warten, um abzuschließen.

+1

Willst du * das Verhalten bei einer einzelnen Datei oder willst du es vermeiden? –

+0

@TomasLycken Ich versuche es zu vermeiden. – imlim

+0

Ich würde dieses Verhalten etwas erwarten, wenn Ihr Handler den Sitzungsstatus erfordert, aber das scheint hier nicht der Fall zu sein. Ist das der echte Code? –

Antwort

0

ASP.NET Web API 2 sollte in der Lage sein, dies mit sehr wenig Zeremonie zu bewältigen. Es ist ein Beispiel here, aber ich werde die wichtigen Teile erneut durchlaufen:

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); 
    } 
} 

Natürlich Einhaken Routing usw. in ASP.NET Web API 2 ist ganz anders als Einhaken ein IHttpHandler, aber es gibt auch eine eine Fülle von Beispielen im Internet (einschließlich hier auf SO), wie man damit beginnt.

+0

Ich habe ASP.NET-Projekt. Muss ich ein separates Web-API-Projekt erstellen? Oder kann ich in der gleichen ASP.NET-Website mit urlrewrite tun? – imlim

+0

@imlim Sie sollten in der Lage sein, Ihrem Website-Projekt einen Web-API-Controller ohne Probleme hinzuzufügen. Werfen Sie einen Blick auf die Dokumentation - dort gibt es viele Anleitungen: https://www.asp.net/mvc –

Verwandte Themen