Problema
Quiero devolver un archivo en mi controlador de API web ASP.Net, pero todos mis enfoques devuelven HttpResponseMessage
como JSON.
Código hasta ahora
public async Task<HttpResponseMessage> DownloadAsync(string id)
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent({{__insert_stream_here__}});
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
return response;
}
Cuando llamo a este punto final en mi navegador, la API web devuelve HttpResponseMessage
como JSON con el Encabezado de contenido HTTP establecido en application/json
.
c#
asp.net-core
.net-core
asp.net-core-webapi
Jan Kruse
fuente
fuente
return File(stream, "application/octet-stream", "filename.xlsx");
esta manera, cuando se descarga, el usuario puede abrirlo directamente.NotFound()
finalmente hace, pero ¿reside en .NET Core o es algo local para su proyecto?ControllerBase
y forma parte del marco en sí mismo docs.microsoft.com/en-us/dotnet/api/…Controller
por lo tanto, no tenía acceso alControllerBase.NotFound()
método. Una vez derivado, todo funcionó. lol / thxPuede devolver FileResult con estos métodos:
fuente
ControllerBase
hay muchas versiones sobrecargadas deControllerBase.File
ayuda que devuelve cualquiera de ellas.Aquí hay un ejemplo simplista de transmisión de un archivo:
Nota:
Asegúrese de usar
FileStreamResult
desdeMicrosoft.AspNetCore.Mvc
y no desdeSystem.Web.Mvc
.fuente