2017-08-04 173 views
1

我正在使用的远程API需要参数referenceId来唯一标识每个请求。我不想增加数字,因为我可能发送并发请求,而且,我需要将这些数字保存在某处(例如,如果我决定重新启动应用程序)。 referenceId应该是所有数字,最多48个字符。我可以使用RNGCryptoServiceProvider生成一个随机的48位数字,这是否是唯一的?如何唯一标识请求?

+0

为什么不使用GUID? –

回答

1

您可以根据GUID生成唯一的整数。看看上的其他话题: How generate unique Integers based on GUIDs

+0

他对生成的值有一定的长度要求,不确定整数是否足够他或他需要不同的值。 – Assil

+1

我也不知道。我发现了这个解决方案,但是对于这种情况可能不是正确的。你的解决方案也许还不错,但是我不知道RNGCryptoServiceProvider.GetBytes是否给出了像GUID那样的唯一编号。 – JBO

1

是的,这将是独一无二的..

public static byte[] GenerateKey(int keySize) 
     { 
      using (var randomNumberGenerator = new RNGCryptoServiceProvider()) 
      { 
       var randomNumber = new byte[keySize]; 
       randomNumberGenerator.GetBytes(randomNumber); 

       return randomNumber; 
      } 
     } 

除此之外,你有没有在存储该值的问题?