gpt4 book ai didi

c# - 如何在 Azure Durable Function 中安全地生成 GUID?

转载 作者:行者123 更新时间:2023-12-04 15:13:05 30 4
gpt4 key购买 nike

我正在编写 Durable Function 并且需要生成一些 GUID。根据the documentation ,您需要格外小心,因为 GUID 生成不是确定性的。重放编排时,它应该使用相同的 GUID,文档中描述的解决方法是

Use NewGuid in .NET or newGuid in JavaScript to safely generate random GUIDs.

我假设它们的意思是 static method Guid.NewGuid() ,但是当我在我的代码中使用它时,像这样:

[FunctionName("Orchestration")]
public static async Task Orchestration([OrchestrationTrigger] IDurableOrchestrationContext context, ILogger logger) {
var guid = Guid.NewGuid();

我收到编译器警告:

Warning DF0102: 'Guid.NewGuid' violates the orchestrator deterministic code constraint. (DF0102)

当我运行该函数时,我发现它在重播时产生了不同的 GUID,因此它绝对不是确定性的。我知道我可以编写一个事件函数来生成一个 GUID,但是如果对此有专门的支持,这似乎有点过分了。 This GitHub comment提到它已在 v1.7.0 中发布(我正在使用 v2.3.1)。

最佳答案

在写这个问题的时候,我意识到我的问题是什么。这是这个假设:

I assume they mean the static method Guid.NewGuid()

原来 IDurableOrchestrationContext 接口(interface)有一个 NewGuid() method还有,哪个

Creates a new GUID that is safe for replay within an orchestration or operation.

[FunctionName("Orchestration")]
public static async Task Orchestration([OrchestrationTrigger] IDurableOrchestrationContext context, ILogger logger) {
var guid = context.NewGuid();

关于c# - 如何在 Azure Durable Function 中安全地生成 GUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64854856/

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