相关疑难解决方法(0)

随机数生成器仅生成一个随机数

我有以下功能:

//Function to get random number
public static int RandomNumber(int min, int max)
{
    Random random = new Random();
    return random.Next(min, max);
}
Run Code Online (Sandbox Code Playgroud)

我怎么称呼它:

byte[] mac = new byte[6];
for (int x = 0; x < 6; ++x)
    mac[x] = (byte)(Misc.RandomNumber((int)0xFFFF, (int)0xFFFFFF) % 256);
Run Code Online (Sandbox Code Playgroud)

如果我在运行时使用调试器执行该循环,则会得到不同的值(这就是我想要的).但是,如果我在该代码下面放置一个断点两行,则"mac"数组的所有成员都具有相同的值.

为什么会这样?

c# random

741
推荐指数
8
解决办法
17万
查看次数

类似YouTube的GUID

是否可以像在YouTube(N7Et6c9nL9w)中生成简短的GUID?

怎么做到呢?我想在网络应用中使用它.

.net c# url-shortener

47
推荐指数
5
解决办法
2万
查看次数

HttpServerUtility.UrlTokenEncode替换netstandard

我移植一个项目的目标net472netstandard.System.Web我坚持的最后一个依赖是HttpServerUtility.UrlTokenEncode(Byte[]).

我发现Microsoft.AspNetCore.WebUtilities,包含Base64UrlTextEncoderWebEncoders,但是它们与UrlTokenEncode/ 不可互换Decode,因为它追加/期望最后的=填充字符数,例如:

var data = Encoding.UTF8.GetBytes("SO");
Convert.ToBase64String(data);              // U08=
HttpServerUtility.UrlTokenEncode(data);    // U081 - this is what's expected and 
                                           // the only thing UrlTokenDecode can handle
Base64UrlTextEncoder.Encode(data);         // U08
WebEncoders.Base64UrlEncode(data);         // U08
Run Code Online (Sandbox Code Playgroud)

据我所知,没有其他差异(我用随机字符串运行测试),但它也引入了一些其他依赖项(Microsoft.Net.Http.Headers和Microsoft.Extensions.Primitives),我不知道真的需要在那个项目中.

是否有任何nuget包装与直接替换?我想自己实现这个,如果没有.

.net base64 urlencode .net-standard

9
推荐指数
2
解决办法
1785
查看次数

如何减少Asp.Net Identity中的密码重置令牌长度?

我使用Asp.Net Identity生成密码重置令牌.

string Token = userManager.GeneratePasswordResetToken(userId);
Run Code Online (Sandbox Code Playgroud)

上面的代码给了我一个很长的令牌.是否可以生成短长度的密码重置令牌?

c# asp.net asp.net-mvc-4 asp.net-identity

8
推荐指数
2
解决办法
1271
查看次数

如何在微服务分布式环境中创建简短可读的UUID

我正在使用CQRS和Event Sourcing将超大型Web服务分解为微服务方法。考虑到这一点,并考虑到以前的体系结构(取决于每个表的SQL Server增量标识号),分布式系统依赖数据库是不可接受的,因为我们现在将对系统中的事件进行各种预测。

但是我们仍然必须保持关系并传送ID以进行分析,API调用等。显而易见的选项是GUID,在您到达GET请求之前,它看起来还不错http://awesomedomain.com/users/98e3b2ab-3c69-4077-aea1-38d22e79b007,嗯,虽然不是那么漂亮又麻烦,但是它将工作。还众所周知,在数据库中使用GUID作为索引键可能会降低性能。

在这里找到一些答案以尝试根据EPOCH UNIX时间戳记生成ID ,缩短GUID这种有趣的方法(但发现不是全局解决方案)之后,除了简短的GUId之外,每种解决方案都不能真正保证全局唯一性,但是仍然不清楚。

另一个选择是拥有一个带有分布式锁定(Redis)的Guid Service来生成EPOCH UNIX滴答ID,但是如果您有成千上万个并发的“创建”请求,这可能给我们带来性能上的损失。

我们是否真的应该缩短GUID或寻找另一个更“易读”的解决方案?对于我们可以实现的全局唯一标识符,还有其他解决方案吗?

c# uuid microservices

5
推荐指数
1
解决办法
216
查看次数