2012-12-26 5 views
0

"응용 프로그램 로그에"Base-64 문자열의 잘못된 문자가 있습니다 "오류가 발생했습니다. 왜 여러 가지 이유가 있었는지와 몇 가지 잠재적 수정 사항을 읽어 보았습니다. 문제는 로컬에서 오류를 재현 할 수 없다는 것입니다."Base-64 문자열의 문자가 잘못되었습니다."

나는 그것이 HttpUtility.HtmlEncode 전화에 올라오고 있다고 믿지만, 나는 확실하지 않다. 여기

오류에서 내 스택 트레이스입니다 :

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); 
+2

그래서 코드는 ..입니까? –

+0

죄송합니다. 코드 세그먼트에 실제로 아무 것도 추가하지 않은 것 같습니다. 지금 거기에 있습니다. – aaronj

+0

일반적인 ASCII 문자 세트 외부에서 이상한 문자를 사용해 보셨습니까? [BodyEncoding] (http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.bodyencoding.aspx) – RichardTowers

답변

1

를, Base64로 선택할 너무 많은 사람들이 있습니다. 이 wikipedia article은 일반적인 변형을 나열하며,이 중 몇 가지는 .NET 메소드에서 거부됩니다. 문제가있는 것은 인덱스 63 및 64의 문자이며 .NET 인코더는 + 및 /를 사용합니다. 패딩이 필요하지만 또 다른 예외가 발생합니다.

처리중인 내용을 확인하려면 오류 로깅을 개선해야합니다.

관련 문제