我有以下Azure功能:

[Function("GetList")]
        public async Task<IActionResult> GetList(
           [HttpTrigger(AuthorizationLevel.Function, "GET", Route = "list")] HttpRequest req)
        {
            try
            {
                var result = await GetMyList();
                return result != null
                    ? new OkObjectResult(result)
                    : new NotFoundObjectResult("No results");
            }
}

结果的类型为IList,值类型为MyObject.如果我调试该函数,我可以看到列表中充满了有值的对象.然而,在Chrome中,我得到了一个空值列表,如下所示:

[
    {},
    {},
    {}
]

MyObject如下所示:

public class MyObject
    {
        public string Prop1;
        public string Prop2;
    }

我还try 使用HttpResponseData作为响应,但结果相同.

这曾经在.NET6中起作用,但在升级到.NET8之后,它不返回值.这是否应该在.Net8中以不同的方式实现?

推荐答案

我同意,并感谢你@Peter B的建议.

你需要在你的MyObject班加{get; set;}分.

我已经try 了你的代码,我也得到了相同的输出.

enter image description here

fieldsfields、我为你工作

#My Code:. 一百零二

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <AzureFunctionsVersion>v4</AzureFunctionsVersion>
    <RootNamespace>My.Namespace</RootNamespace>
    <OutputType>Exe</OutputType>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.19.0" />
    <PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.16.2" />
    <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore" Version="1.0.0" />
    <PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.21.0" />
    <PackageReference Include="Microsoft.Azure.Functions.Worker.ApplicationInsights" Version="1.0.0" />

  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
  <ItemGroup>
    <Using Include="System.Threading.ExecutionContext" Alias="ExecutionContext"/>
  </ItemGroup>
</Project>

100:

using System.Net;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace Company.Function
{
    public class HttpTrigger1
    {
        private readonly ILogger _logger;

        public HttpTrigger1(ILoggerFactory loggerFactory)
        {
            _logger = loggerFactory.CreateLogger<HttpTrigger1>();
        }

        [Function("HttpTrigger1")]
        public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route ="list")] HttpRequest req)
        {
            _logger.LogInformation("C# HTTP trigger function processed a request.");

                        try
            {
                var result = await GetMyList();
                return result != null
                    ? new OkObjectResult(result)
                    : new NotFoundObjectResult("No results");
            }
            catch (Exception ex)
            {
                _logger.LogError($"Error: {ex.Message}");
                return new StatusCodeResult(StatusCodes.Status500InternalServerError);
            }
        }

        private static async Task<List<MyObject>> GetMyList()
        {
            return new List<MyObject>
        {
            new MyObject { Prop1 = "Vivek", Prop2 = "Shandilya" },
            new MyObject { Prop1 = "Vivek", Prop2 = "Vaibhav" },

        };
        }
    }

    public class MyObject
    {
        public string Prop1 {get; set;}
        public string Prop2 {get; set;}
    }
}

100:

using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.DependencyInjection;

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureServices(services => {
        services.AddApplicationInsightsTelemetryWorkerService();
        services.ConfigureFunctionsApplicationInsights();
    })
    .Build();

host.Run();

100:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
  }
}

OUTPUT: enter image description here

Chrome:

enter image description here

Edge:

enter image description here

Csharp相关问答推荐

如何将两个查询结果组合在C#ASP.NET MHC控制器中

在Microsoft XNA框架(MonoGame)中旋转相机

在C# 11之前, struct 中的每个字段都必须显式分配?不能繁殖

IComponition.获取IReadOnlyCollection的返回默认属性值

Microsoft. VisualBasic. FileIO. FileSystem. MoveFile()对话框有错误?

如何修改中间件或其注册以正确使用作用域服务?

限制特定REST API不被访问,但部署代码

如何在Parall.ForEachAsync中使用CancerationTokenSource

HttpConext.Request.Path和HttpConext.GetEndpoint()之间的差异

在命名管道上使用GRPC ASP.NET核心时如何配置命名管道权限

如何在C#中转换泛型包装类内部的派生类

等待一个等待函数

使用CollectionView时在.NET Maui中显示数据时出现问题

.Net MAUI,在将FlyoutPage添加到容器之前,必须设置添加构造函数导致Flyout和Detail"

.NET8->;并发词典总是比普通词典快...怎么回事?[包含基准结果和代码]

如何在C#.NET桌面应用程序中动态更改焦点工具上的后退 colored颜色

如何在Xamarin.Forms中检索PanGesture事件的位置?

读取测试项目中的应用程序设置

客户端/服务器RPC如何处理全局变量?

如何使用moq和xUnit对删除操作进行单元测试?