Как видно из названия говорит, я получаю:Недопустимая длина для Base-64 массива символов
неверной длину для базы-64 голец массива.
Я прочитал об этой проблеме здесь, и кажется, что предложение хранить ViewState в SQL, если он большой. Я с помощью мастера с большим количеством сбора данных, поэтому шансы - это мой ViewState большой. Но, прежде чем я перейду к решению «store-in-DB» , может быть, кто-нибудь может взглянуть и сказать мне, есть ли у меня другие варианты?
Я построить электронную почту для доставки, используя метод ниже:
public void SendEmailAddressVerificationEmail(string userName, string to)
{
string msg = "Please click on the link below or paste it into a browser to verify your email account.<BR><BR>" +
"<a href=\"" + _configuration.RootURL + "Accounts/VerifyEmail.aspx?a=" +
userName.Encrypt("verify") + "\">" +
_configuration.RootURL + "Accounts/VerifyEmail.aspx?a=" +
userName.Encrypt("verify") + "</a>";
SendEmail(to, "", "", "Account created! Email verification required.", msg);
}
Метод Encrypt выглядит следующим образом:
public static string Encrypt(string clearText, string Password)
{
byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(clearText);
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
byte[] encryptedData = Encrypt(clearBytes, pdb.GetBytes(32), pdb.GetBytes(16));
return Convert.ToBase64String(encryptedData);
}
Вот что HTML выглядит в Hotmail:
Пожалуйста, нажмите на ссылку ниже или вставьте ее в браузер, чтобы подтвердить свой учетная запись электронной почты.
http://localhost:1563/Accounts/VerifyEmail.aspx?a=YOHY57xYRENEOu3H+FGq1Rf09AZAI56EPjfwuK8XWKg=
На приемном конце, страница VerifyEmail.aspx.cs имеет следующую строку:
string username = Cryptography.Decrypt(_webContext.UserNameToVerify, "verify");
Здесь является добытчик для UserNameToVerify:
public string UserNameToVerify
{
get
{
return GetQueryStringValue("a").ToString();
}
}
И здесь является методом GetQueryStringValue:
private static string GetQueryStringValue(string key)
{
return HttpContext.Current.Request.QueryString.Get(key);
}
И метод расшифровывать выглядит следующим образом:
public static string Decrypt(string cipherText, string password)
{
**// THE ERROR IS THROWN HERE!!**
byte[] cipherBytes = Convert.FromBase64String(cipherText);
Может ли эта ошибка быть исправлена с кодом исправления или я должен хранить ViewState в базе данных?
плз отправить мне дэ ошибки – DevDemon
DevDemon - ошибка, как писала «FormatException: Invalid длина массива символов Base-64.» Есть ли что-то еще, что я должен отправить? –