我们正在使用MD5哈希算法生成PartitionKey以路由到有状态服务。很长一段时间以来,我们没有看到这种方法中的任何相关问题。但是,升级到. NET 6后,我们在尝试路由到有状态服务时很少在日志中看到WindowsCryptographicException。
区域/组件:状态服务、PartitionKey生成器
重现
私有只读MD5_md5 = MD5.Create();
public long GetPartitionKey(string Id)
{
var bytesToHash = Encoding.ASCII.GetBytes($"{Id}");
var hash = _md5.ComputeHash(bytesToHash);
var key = BitConverter.ToInt64(hash, 0);
return key;
}
预期行为不应返回任何错误。观察到的行为:{"类型":" WindowsCryptographicException ","消息":"未知错误(0xc1000008)"," StackTrace ":"位于内部.加密. HashProviderCng. AppendHashData(ReadOnlySpan "1源)位于内部.加密. HashProvider. AppendHashData(Byte [] data,Int32偏移量,Int32计数)位于系统.安全.加密. HashAlgorithm. ComputeHash(Byte [] buffer)屏幕截图如果适用,请添加屏幕截图以帮助解释问题。
服务结构运行时版本:8.0
环境:
Azure Linux如果这是一个回归,它从哪个版本回归?升级到.NET6后
1条答案
按热度按时间31moq8wy1#
"Administrator"
身份运行Visual studio以下是安装的Service Fabric版本**