2011-01-26 4 views
4

최근에 내 사이트에 ELMAH가 구현되었으며 자주 "Base-64 문자열에 잘못된 문자가 있습니다"오류가 나타납니다. 나는 그 자신을 방아쇠를 당긴 적이 없으며 어떤 사용자도 그것에 대해 불평하지 않아서 무슨 일이 일어나고 있는지 모른다. 작은 것에서 나는 그것을 볼 수 있었다 viewstate가 너무 커지고 있거나 타락하게 될지도 모르는 것처럼 그것은 생각된다. 아무도 원인이 무엇인지, 어떻게 예방해야합니까? 여기에 YSOD의 관련 선이 있다고 나는 믿습니다.ASP.NET Base-64 문자열의 문자가 잘못되었습니다.

[FormatException: Invalid character in a Base-64 string.] 
[ViewStateException: Invalid viewstate. 
[HttpException (0x80004005): The client disconnected.] 

이러한 오류에 대해 수행 할 수있는 작업이 있습니까? 아니면 ELMAH로 필터링해야합니까?

답변

2

일이 어떻게 구성되어 있는지 알 수 있습니다.

http://groups.google.com/group/elmah/browse_thread/thread/ec9c4bdddaa1a9e/9108b48d3def87db?lnk=gst&q=viewstate+elmah#9108b48d3def87db

UPDATE

시도를하고 발생하는 위치를 식별 : 이것 좀 봐. 당신이 말한대로, 그것은 생산에 어떤 문제가 발생하지 않는 경우, 하루의 끝에서

"Invalid Character in Base-64 String" using ASP.NET and C#

asp.net Invalid character in a Base-64 string

당신은 이러한 오류를 필터링 할 수 있습니다 몇 가지 잠재적 인 원인이 될 수 있습니다. EnableViewStateMac을 false로 설정하십시오.

+0

흠. 그렇다면이 오류는 해결할 수있는 것이 아닙니다. 내가 걱정해야 할게 아니야? – William

+0

@William, 업데이트 :-) 참조 – IrishChieftain

4

이 오류는 사용자가 다시 게시를 트리거하는 단추를 두 번 클릭하여 발생하는 경향이 있습니다. 두 번째 다시 게시 요청은 첫 번째 게시 요청을 취소합니다. 첫 번째 요청의 viewstate는 부분적으로 만 제출되므로 유효하지는 않지만 연결이 끊어져 최상위 오류를 유발하는 오류가 브라우저로 전송 될 수 없습니다. 사용자가 두 번 이상 작업을하면 문제가 발생할 수 있습니다. 그렇지 않으면 이러한 오류를 간단히 필터링 할 수 있습니다. 여기 ELMAH 비슷한 오류를 필터링의 좋은 예입니다 : https://stackoverflow.com/a/2549509/267448

당신은 ASP.NET 웹폼을 사용하는 경우는, 여기에 다시 게시하는 동안 트리거 제어를 비활성화하는 몇 가지 코드는 다음과 같습니다 http://disturbedbuddha.wordpress.com/2007/12/10/disabling-a-trigger-control-during-asynchronous-postback/

조심 당신이하지 않으면 그 HTML < 입력 형식 = "submit"> 단추, 폼 변수에서 제외되므로 서버 쪽 Click 이벤트가 발생하지 않습니다. < 입력 유형 = "버튼"으로 변경하십시오. >으로 수정되었습니다. WebForms에서는 < asp : Button UseSubmitBehavior = "False"/ >이됩니다.

위의 내용은 WebForms AJAX 페이지에서 작동하지만 다른 페이지에서도 약간의 jQuery가 있습니다.

$(function() { 
    $("a[href^='javascript']").click(function (event) { 
     if (event.target.disabled) 
      return false; 
     event.target.disabled = true; 
     setTimeout(function() {event.target.disabled = false;}, 250); 
    }); 
}); 
+0

Encosia Postback Ritalin : http://encosia.com/downloads/postback-ritalin/ https://github.com/Encosia/PostBackRitalin – user423430

+0

고마워! NuGet 패키지로도 제공됩니다 : http://nuget.org/packages/PostBackRitalin –