जैसा कि शीर्षक कहता है, मुझे मिल रहा है:
बेस -64 चार सरणी के लिए अमान्य लंबाई।
मैंने इस समस्या के बारे में यहाँ पढ़ा है और ऐसा लगता है कि यह सुझाव एसक्यूएल में ViewState को स्टोर करने के लिए है यदि यह बड़ा है। मैं डेटा संग्रह की एक अच्छी डील के साथ एक विज़ार्ड का उपयोग कर रहा हूं, इसलिए संभावना है कि मेरा व्यूस्टेट बड़ा है। लेकिन, इससे पहले कि मैं "स्टोर-इन-डीबी" समाधान की ओर मुड़ूं, शायद कोई देख ले और मुझे बताए कि क्या मेरे पास अन्य विकल्प हैं?
मैं नीचे विधि का उपयोग करके डिलीवरी के लिए ईमेल का निर्माण करता हूं:
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);
}
एन्क्रिप्ट विधि इस प्रकार है:
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 हॉटमेल में कैसा दिखता है:
कृपया नीचे दिए गए लिंक पर क्लिक करें या अपने ईमेल खाते को सत्यापित करने के लिए इसे ब्राउज़र में पेस्ट करें।
अंतिम छोर पर, 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 को स्टोर करना चाहिए?