You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET 5的Azure Functions中仅返回纯JSON数据

.NET 5 Azure Functions HttpTrigger返回纯JSON解决方案

问题原因

.NET 5对应的Azure Functions采用隔离工作进程模型,若直接返回OkObjectResult、JsonResult等ASP.NET Core原生ActionResult类型,隔离进程宿主会将整个Result对象完整序列化返回,才会出现目标JSON被包裹在Value字段、额外携带Formatters、StatusCode等多余字段的情况。

标准实现方案

方案1:使用HttpResponseData构造响应(官方推荐,最稳定)

这是隔离进程模型下的原生支持方案,直接写入JSON内容即可返回纯结构:

using System.Net;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;

public static class TestFunction
{
    [Function("ReturnJsonFunction")]
    public static async Task<HttpResponseData> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestData req,
        FunctionContext executionContext)
    {
        // 你的业务数据对象
        var resultObj = new 
        {
            MyValueOne = true,
            MyValueTwo = 8
        };

        // 构造200状态码响应
        var response = req.CreateResponse(HttpStatusCode.OK);
        // 自动序列化对象为JSON,自动设置application/json响应头
        await response.WriteAsJsonAsync(resultObj);

        return response;
    }
}

方案2:保留ActionResult返回风格,添加HttpResponseBody特性

如果你希望沿用ASP.NET Core的IActionResult返回写法,只需要在函数返回值上添加[return: HttpResponseBody]特性,告知宿主直接将Result的内容作为响应体返回,无需序列化整个Result对象:

using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;

public static class TestFunction
{
    [Function("ReturnJsonFunction")]
    [return: HttpResponseBody]
    public static IActionResult Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestData req,
        FunctionContext executionContext)
    {
        var resultObj = new 
        {
            MyValueOne = true,
            MyValueTwo = 8
        };

        return new OkObjectResult(resultObj);
    }
}

补充说明

若后续升级到.NET 6及以上版本,选择进程内运行模型的Azure Functions,直接返回OkObjectResult即可正常输出纯JSON,不需要额外处理。

内容的提问来源于stack exchange,提问作者ChrisHDog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 00:45:04