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 に答える