注意:我已经解决了这篇文章中提到的问题。 经过很多谷歌我找不到合适的解决方案。就像现在我知道答案。我认为这篇文章将节省其他开发人员试图解决的问题。
问题:
我想生成加密随机字符串并将其作为url的一部分发送给用户。使用Base64字符串,您可能会得到错误:
请求过滤模块配置为拒绝该请求 包含双转义序列
或者它找不到你的路线。
所以要么你破解/解决方法并在Base64字符串上查找/替换转义字符或使用此解决方案。
这就是我的原始代码的样子。
public string GenerateRandomString()
{
var randomBytes = GenerateRandomBytes(512);
var randomString = Convert.ToBase64String(randomBytes);
return randomString;
}
private byte[] GenerateRandomBytes(int keyBitLength)
{
using (var provider = new RNGCryptoServiceProvider())
{
var lengthInByte = keyBitLength / 8;
var randomNumber = new byte[lengthInByte];
provider.GetBytes(randomNumber);
return randomNumber;
}
}
解决方案是UrlTokenEncode。添加了将随机字节转换为Url编码令牌的新方法。
public string GenerateRandomStringToken()
{
var randomBytes = GenerateRandomBytes(512);
return HttpServerUtility.UrlTokenEncode(randomBytes);
}
private byte[] GenerateRandomBytes(int keyBitLength)
{
using (var provider = new RNGCryptoServiceProvider())
{
var lengthInByte = keyBitLength / 8;
var randomNumber = new byte[lengthInByte];
provider.GetBytes(randomNumber);
return randomNumber;
}
}
答案 0 :(得分:0)
在上述问题中,还提供了解决方案。