我在应用程序日志中看到“Base-64字符串中的无效字符”错误。我已经阅读了一些不同的原因,为什么它可能会出现和一些潜在的修复。问题是我无法在本地重现错误。
我相信它会在HttpUtility.HtmlEncode
来电时出现,但我并不确定。
这是我的错误中的StackTrace:
at System.Convert.FromBase64String(String s)
at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState)
at System.Web.UI.HiddenFieldPageStatePersister.Load()
错误发生在电子邮件提交表单上;用户输入姓名,电子邮件地址和消息,并通过SMTP发送到每个指定的电子邮件地址。
我正在寻找一些方法可以尝试并强制发生此错误,以便我可以修复它。
代码段如下:
var emailMessage = new MailMessage();
emailMessage.From = new MailAddress(emailAddress, name);
emailMessage.Subject = "Subject";
emailMessage.Body = HttpUtility.HtmlEncode(message);
emailMessage.To.Add(new MailAddress(contactEmailAddress, contactName));
var smtpClient = new SmtpClient(ConfigurationManager.AppSettings["SMTPServer"]);
smtpClient.Send(emailMessage);
答案 0 :(得分:1)
与任何好的标准一样,Base64也有很多选择。这个wikipedia article列出了常见的变体,其中一些将被.NET方法拒绝。麻烦的是索引63和64的字符,.NET编码器使用+和/。并且需要填充,但这会产生另一个异常。
您需要改进错误记录以真正了解您正在处理的内容。