我一直在使用在我的 SSIS 2008 C# 脚本组件 (.NET 3.5) 中找到的OAuthBase类。
它一直工作正常,但最近我遇到了一个问题,如果我在同一个数据流任务中执行多个脚本组件,使用上述 OAuthBase 类中的 GenerateNonce 方法,我最终会得到相同的随机数(随机数)。
这是生成随机数的 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# 脚本组件代码的任何想法?