小编Bri*_*ian的帖子

使用Azure Function(.NET Core)下载文件

我已经使用.NET Core创建和HTTP触发了Azure函数(v2),希望我可以在请求正文中传递一些信息的同时执行该函数,然后让该函数在浏览器中返回/下载文件。不幸的是,我正在努力使这个工作。

以下是一段代码

public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequest req, ILogger log)
{
    string csv;

    //Do some stuff to create a csv

    byte[] filebytes = Encoding.UTF8.GetBytes(csv);

    req.HttpContext.Response.Headers.Add("content-disposition", "attachment;filename=Export.csv");
    req.HttpContext.Response.ContentType = "application/octet-stream";

    return (ActionResult)new OkObjectResult(filebytes);
}
Run Code Online (Sandbox Code Playgroud)

当我使用Postman进行发布时,请求被接受,但响应为406“不可接受”,并且输出为日志状态

“ Microsoft.AspNetCore.Mvc.Infrastructure.DefaultOutputFormatterSelector [1]找不到内容类型'application / octet-stream'的输出格式化程序,无法写入响应。”

我尝试了多种内容类型,包括text / plain和text / csv,它们都对输出格式给出相同的响应。

如果我删除或注释掉ContentType,则请求将处理并返回200,但文件字节将在响应正文中返回,而不是在浏览器中下载。

c# .net-core asp.net-core azure-functions azure-functions-runtime

2
推荐指数
1
解决办法
1534
查看次数