Azure隔离式Durable Entity函数始终未执行问题求助
.NET 8隔离式Durable Entities实体始终返回Null,实体函数断点未命中
我基于微软Durable Entities文档创建了一个.NET 8隔离式函数应用作为POC,包含一个Counter实体,以及两个HTTP端点:一个用于获取实体状态值,另一个用于给实体累加数值。但调用获取端点时始终返回Null,即使让应用运行一整夜排除异步时序问题,结果还是一样。我已经在Azureite本地存储和Azure云存储两种环境下测试过,问题都存在。
函数框架已经识别到了实体函数,但实体类内部的断点从来没有命中过。
实体定义
public class Counter : TaskEntity<int> { readonly ILogger logger; public Counter(ILogger<Counter> logger) { this.logger = logger; } public void Add(int amount) { this.State += amount; } public Task Reset() { this.State = 0; return Task.CompletedTask; } public Task<int> Get() { return Task.FromResult(this.State); } // Delete is implicitly defined when defining an entity this way [Function(nameof(Counter))] public static Task Run([EntityTrigger] TaskEntityDispatcher dispatcher) => dispatcher.DispatchAsync<Counter>(); }
HTTP函数定义
[Function("GetCounter")] public static async Task<HttpResponseData> GetCounter( [HttpTrigger(AuthorizationLevel.Function, "get", Route = "Counter/{entityKey}")] HttpRequestData req, [DurableClient] DurableTaskClient client, string entityKey) { var entityId = new EntityInstanceId("Counter", entityKey); EntityMetadata<int>? entity = await client.Entities.GetEntityAsync<int>(entityId); HttpResponseData response = req.CreateResponse(HttpStatusCode.OK); await response.WriteAsJsonAsync(entity?.State); return response; } [Function("AddCounter")] public static async Task<HttpResponseData> AddCounter( [HttpTrigger(AuthorizationLevel.Function, "get", Route = "Counter/{entityKey}/add")] HttpRequestData req, [DurableClient] DurableTaskClient client, string entityKey) { var entityId = new EntityInstanceId("Counter", entityKey); await client.Entities.SignalEntityAsync(entityId, "add", 1); HttpResponseData response = req.CreateResponse(HttpStatusCode.OK); return response; }
已识别的函数

csproj文件
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <AzureFunctionsVersion>v4</AzureFunctionsVersion> <OutputType>Exe</OutputType> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <FrameworkReference Include="Microsoft.AspNetCore.App" /> <PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.21.0" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask" Version="1.1.3" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http" Version="3.1.0" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore" Version="1.2.0" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.17.0" /> <PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.22.0" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.ApplicationInsights" Version="1.2.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>
内容的提问来源于stack exchange,提问作者Evan Nielsen
相关产品推荐
相关产品推荐

