Azure函数中有以下代码:
string id = Guid.NewGuid().ToString();
myObject.id = id;现在,如果我同时进行多个http调用,并发调用将最终具有相同的id,我期望它们具有不同的id。
我试过改变host.json,但没有运气。无论如何,以下是host.json中的代码:
{
"version": "2.0",
"extensions": {
"http": {
"maxConcurrentCalls": 1
}
}
}Azure函数版本:2 Dotnet版本: 5.0
我怎样才能解决这个问题?
发布于 2022-03-31 10:08:29
摘自Guid.NewGuid法文档。
这是一个方便的静态方法,您可以调用它来获得一个新的Guid。该方法创建第4版通用唯一标识符(UUID),如RFC 4122,Sec所述。4.4。返回的Guid保证不等于Guid.Empty。 在Windows上,此函数封装对CoCreateGuid函数的调用。生成的GUID包含122位强熵。 在非Windows平台上,从.NET 6开始,该函数调用操作系统的底层加密安全伪随机数生成器(CSPRNG)生成122位强熵。在早期版本的.NET中,熵并不保证由CSPRNG生成。
提交给该委员会的RFC规定:
版本4 UUID用于从真正随机或伪随机数生成UUID。 该算法如下:
clock_seq_hi_and_reserved的两个最重要位(位6和7)分别设置为零和1。time_hi_and_version字段的四个最重要位(位12到15)设置为4.1.3节中的4位版本号。基于这些规范,对相同Azure函数的两个调用生成相同的GUID应该是不可能的。一些本地测试表明(在可测试的请求数量中)是不可能的。
您可能在某个地方有一个静态属性或对象,这就是您的is相同的原因。
https://stackoverflow.com/questions/71690140
复制相似问题