달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2012. 7. 20. 15:08

Validation of viewstate MAC failed .NET/ASP.NET2012. 7. 20. 15:08


Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.


이러한 에러는 개발할땐 못보다가 서버에 배포하면 종종 볼수 가 있다.

원인

서버가 2대 이상이면서 로드밸런싱을 사용하는 경우 발생..
그 이유는 각 서버에 뷰상태의 메세지 인증코드(MAC)가 존재하는데.
이게 각 서버별로 가지고 있는 값이 달라요..
그래서 A라는 서버에서 부여받은 MAC값을 가지고 이벤트를 발생시켰는데 로드밸런싱을 통해 내 뜻과는 전혀 상관없이
서버 B로 접속하여 이벤트를 가져올 경우 MAC값이 바뀌었기 때문에 나는 에러지요..
그렇기 때문에 서버가 한대일 경우는 발생하지도 않고.
두대이더라도 한번 붙으면 계속 거기만 붙을 경우도 에러가 나지 않음.

[출처] Validation of viewstate MAC failed 에러를 잡자.|작성자 다스누렁

한마디로  L4를 사용하는 서버에 배포하면 문제가 생긴다는 말이다.


해결방법

1. 페이지 지시자 혹은 web.config 에 ViewState Mac을 검사하지 않도록 하는 것이다.
   1.1. 페이지 지시자
      <%@Page Language="C#" EnableViewStateMac="true" %>
   1.2. web.config
      <system.web> 
    <pages enableViewStateMac=”false”/> 
       </system.web> 


2. machinekey를 동일하게 선언해주는 방법

<system.web>
 <machineKey validationKey="41953ACC858CCDB249413139494FA2EEF619D9A66A4E9740B0368C5EFD2581EC38D717F5036F3DA174D63ECBBE2088BA64EE756102138DF17172E86948AF47F2" decryptionKey="2EABFCD5CD48D9F8E2E6681EB2820FD083308286A9FA077140D910A8FE5BD592" validation="SHA1" decryption="AES" />
</system.web>

machinekey 생성하는 곳
 http://aspnetresources.com/tools/machineKey

[출처] Validation of viewstate MAC failed 에러를 잡자.|작성자 다스누렁


1번이 더 쉬우나 서버가 위험해 질 수 있으니 귀찮더라도 2번 방법을 추천한다.

'.NET > ASP.NET' 카테고리의 다른 글

FileUpload 이미지 미리보기  (0) 2015.03.10
:
Posted by 깜스