我在SSIS 2008 C#腳本組件(.NET 3.5)中使用的OAuthBase類找到了HERE。C#中OAuth隨機數的線程安全隨機數/字符串生成器
它一直工作正常,但最近我遇到了問題,如果我在同一個數據流任務中使用上述OAuthBase類中的GenerateNonce方法執行多個腳本組件,我最終會得到相同的nonce(隨機數)。
下面是來自OAuthBase類的摘錄生成隨機數:
using System;
using System.Security.Cryptography;
using System.Collections.Generic;
using System.Text;
using System.Web;
namespace OAuth {
public class OAuthBase {
....snip......
protected Random random = new Random();
public virtual string GenerateNonce() {
// Just a simple implementation of a random number between 123400 and 9999999
return random.Next(123400, 9999999).ToString();
}
}
}
在每個腳本組件我使用這個C#代碼來啓動類,並生成一個隨機數:
OAuthBase oAuth = new OAuthBase();
string nonce = oAuth.GenerateNonce();
從我的搜索中我認爲這與它不是線程安全有關?我不完全確定。
我只能在SSIS 2008中運行.NET 3.5,所以我知道一些在.NET 4.0中引入的新東西,我無法使用。
有關如何修改OAuthBase類和/或C#腳本組件代碼的任何想法?
此隨機數的可能值很少。除了線程缺陷之外,它不是唯一的。 – usr 2013-02-12 23:33:14
@usr - 謝謝。那時候我想過那個。也許我只是做一些像'return Guid.NewGuid.ToString();'?我不完全確定我的隨機數可以達到多長時間(擊中Magento REST API)。 – jared 2013-02-12 23:41:16