Beim Versuch, eine Datei von einem ASP.NET-Web-API-Controller zurückzugeben, können Probleme mit der auftreten Die Antwort wird als JSON behandelt. Um dieses Problem zu beheben, ist es wichtig, den richtigen Ansatz zum Herunterladen von Dateien in ASP.NET Core zu verstehen.
Um eine Datei in der ASP.NET Core-Web-API zurückzugeben, müssen Sie ein abgeleitetes IActionResult anstelle von HttpResponseMessage zurückgeben. Das Framework interpretiert HttpResponseMessage als Modell, was zum JSON-Antwortproblem führt.
Unten finden Sie ein aktualisiertes Codebeispiel, das zeigt, wie eine Datei mit IActionResult zurückgegeben wird:
[Route("api/[controller]")]
public class DownloadController : Controller
{
// GET api/download/12345abc
[HttpGet("{id}")]
public async Task Download(string id)
{
Stream stream = await GetStreamBasedOnIdAsync(id);
if (stream == null)
return NotFound(); // Returns a NotFoundResult with Status404NotFound response
return File(stream, "application/octet-stream", $"{FileName}.{FileExtension}"); // Returns a FileStreamResult
}
}
Hinweis: Verwenden Sie keine using-Anweisung für den Stream; Andernfalls wird es verworfen, bevor die Antwort gesendet wurde, was zu einer Ausnahme oder einer beschädigten Antwort führt. Das Framework übernimmt die Stream-Entsorgung automatisch, wenn die Antwort abgeschlossen ist.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3