0

我在我的应用程序日志中经常看到“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);
4

1 回答 1

1

像任何好的标准一样,Base64 也有很多可供选择。这篇维基百科文章列出了常见的变体,其中一些将被 .NET 方法拒绝。麻烦的是索引 63 和 64 的字符,.NET 编码器使用 + 和 /。并且需要填充,但这会产生另一个异常。

您需要改进您的错误日志记录才能真正了解您正在处理的内容。

于 2012-12-26T21:49:00.690 回答