Note: Forums will be making significant UX changes to address key usability improvements surrounding search, discoverability and navigation. To learn more about these changes please visit the announcement which can be found HERE.
[ASP.NET] สอบถามเรื่อง Unable to validate data กับ EnableViewStateMac

คำตอบ [ASP.NET] สอบถามเรื่อง Unable to validate data กับ EnableViewStateMac

  • 10 มิถุนายน 2554 14:45
     
     

    รบกวนสอบถามเรื่อง Error ที่เกิดครับ

    Server Error in '/' Application.
    --------------------------------------------------------------------------------

    Unable to validate data.
    Description: An unhandled exception occurred during the execution of the
    current web request. Please review the stack trace for more information
    about the error and where it originated in the code.

    Exception Details: System.Web.HttpException: Unable to validate data.
    .
    .
    .

    ผมลองค้นหาวิธีแก้ปัญหาจาก web นอกเค้าแนะนำให้กำหนดค่า
    "EnableViewStateMac = false" ใน web.config (ของผมเข้าไปแก้ที่ machine.config เพราะไม่ได้ระบุใน web.config) หลังทำการแก้ไขแล้ว สามารถแก้ปัญหาที่เกิดได้

    จึงอยากสอบถามครับว่า
    - สาเหตุของ Error เกิดจากสาเหตุใดได้บ้าง
    - การแก้ไขค่า EnableViewStateMac จะกระทบกับการทำงานของส่วนอื่นโปรแกรมอะไรบ้าง

    PS.
    - ผมพัฒนาบน VS2003 C#
    - เครื่อง Web Server ทำ Load Balance

    ขอบคุณครับ


    *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

ตอบทั้งหมด

  • 14 มิถุนายน 2554 3:17
    ผู้ดูแล
     
     คำตอบ

    - สาเหตุของ Error เกิดจากสาเหตุใดได้บ้าง

    โดยปกติ ASP.NET จะตรวจสอบ viewstate เพื่อให้ทราบว่า มาจากหน้าเพจที่ถูกต้องรึป่าว หรือว่ามาจากเซิร์ฟเวอร์เดียวกันรึป่าว
    ทั้งนี้เป็นเพราะ ViewState จะหายไปทันทีเมื่อส่งข้อมูลไปยัง server และ client เรียบร้อยแล้ว


    โดย feature นี้จะสร้างขึ้นโดยอัตโนมัติ เพื่อตรวจสอบ server ณ ขณะปัจจุบันโดย message authentication code (MAC) จะมีการสร้างและส่งข้อความใน ViewState และส่งข้อความกลับไปยังเบราว์เซอร์เพื่อทำการตรวจสอบ
    ซึ่งปัญหานี้จะเกิดขึ้นก็ต่อเมื่อมีการ postback ในหน้าเวปหรือ server ที่แตกต่างกัน


    - การแก้ไขค่า EnableViewStateMacจะกระทบกับการทำงานของส่วนอื่นโปรแกรมอะไรบ้าง

    คำตอบ คือ จะถูกแฮคได้ง่ายค่ะ
    เพราะ enableViewStateMac จะ encrypt และทำการตรวจสอบViewState (ใน hidden field) ในหน้าเพจนั้น
    โดยถ้า
    ViewState เซตค่าเป็น false มันจะไม่ทำการ encrypt ใน postback

    เพราะฉะนั้นจึงต้องเซต ค่า EnableViewStateMac = false

     

    ศึกษาข้อมูลเพิ่มเติม

    http://msdn.microsoft.com/en-us/library/system.web.ui.page.enableviewstatemac.aspx

    http://www.codeproject.com/Articles/43637/Weird-Error-Unable-to-Validate-Data-in-ASP-NET-web.aspx


    Supa Sethasiripong [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    • ทำเครื่องหมายเป็นคำตอบโดย supa_sModerator 15 มิถุนายน 2554 1:20
    •  
  • 16 มิถุนายน 2554 13:07
     
     
    ขอบคุณมากครับ
    *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* KACHEN T.
  • 17 มิถุนายน 2554 2:24
    ผู้ดูแล
     
     

    ไม่เป็นไรค่ะ ก็จะพยายามหาคำตอบให้

    ถ้ายังงัยก็เข้ามาถามคำถามกันเยอะๆ นะคะ


    Supa Sethasiripong [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.