gpt4 book ai didi

c# - 如何从 Azure Function (HTTP) 返回数据流

转载 作者:行者123 更新时间:2023-12-01 23:25:28 25 4
gpt4 key购买 nike

我需要从 Azure 函数进行一系列数据库调用,并在结果(文本 block )可用时将结果返回给 http 调用方。这可能在一分钟左右的时间内偶尔发生。

我不需要“文件下载”响应,只需要通过响应流发送的数据。

有没有办法在 Azure 函数中写入响应正文流?

编辑:

尝试创建我自己的 IActionResult 在写入响应正文流时遇到问题 不允许同步操作。改为调用 ReadAsync 或将 AllowSynchronousIO 设置为 true。

最佳答案

以下是 HttpTrigger Azure 函数的示例:

[FunctionName("Function1")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
return new OkResult();
}

您可以使用HttpRequest req参数获取响应对象:

var response = req.HttpContext.Response;

我们可以删除返回类型并简单地返回Task,然后按如下方式传输数据:

public class Function1
{
private async IAsyncEnumerable<string> GetDataAsync()
{
for (var i = 0; i < 100; ++i)
{
yield return "{\"hello\":\"world\"}";
}
}

[FunctionName("Function1")]
public async Task Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
var response = req.HttpContext.Response;

response.StatusCode = 200;
response.ContentType = "application/json-data-stream";

await using var sw = new StreamWriter(response.Body);
await foreach (var msg in GetDataAsync())
{
await sw.WriteLineAsync(msg);
}

await sw.FlushAsync();
}
}

关于c# - 如何从 Azure Function (HTTP) 返回数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67301743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com