国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ASP.NET視圖狀態驗證MAC失敗 解決辦法

2019-11-17 04:08:02
字體:
來源:轉載
供稿:網友
asp.net視圖狀態驗證MAC失敗 解決辦法

  

    驗證視圖狀態 MAC 失敗。如果此應用程序由網絡場或群集承載,請確保 <machineKey> 配置指定了相同的 validationKey 和驗證算法。不能在群集中使用 AutoGenerate。
      說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。

      異常詳細信息: System.Web.HttpException: 驗證視圖狀態 MAC 失敗。如果此應用程序由網絡場或群集承載,請確保 <machineKey> 配置指定了相同的 validationKey 和驗證算法。不能在群集中使用 AutoGenerate。  

分析:

分析后找到了問題的根源。首先,文章中提到,如果用GridView,并且指定了DataKeyNames屬性,則出于安全的理由(因為 DataKeyNames指定的字段代表數據的主鍵,且該主鍵值需要保存在視圖狀態中發送到客戶端,用戶如果篡改主鍵值,會導致安全問題),GridView會要求加密視圖狀態。為此會自動在頁面表單</forms>之前添加一個<input type="hidden" name="__VIEWSTATEENCRYPTED" id="__VIEWSTATEENCRYPTED" value="" /> 。

然而,Atlas的UpdatePanel要求放置在<form></form>內部,也就是</form>之前。這就意味著添加的隱藏input控件沒有被放置在UpdatePanel內,而是放置在UpdatePanel和</form>之間。

當UpdatePanel更新時,UpdatePanel內部的控件被提交到服務器進行處理(Patrial Rendering),而整個頁面并沒有被提交。也就是說隱藏的input控件沒有隨著一起提交。因此服務器并不知道提交的ViewState被加密了,從而導致MAC驗證錯誤。

      解決方法有二,僅供參考:

1.可以在當前頁面的<page ...>里加兩個屬性:
enableEventValidation = " false " viewStateEncryptionMode = " Never "


2.當然還可以在web.config里加入:(<system.web>之間)
< pages enableEventValidation = " false " viewStateEncryptionMode = " Never " /> 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 卓尼县| 专栏| 湛江市| 图木舒克市| 临城县| 上蔡县| 荥经县| 涟水县| 万宁市| 景宁| 宁夏| 双辽市| 新密市| 黎川县| 家居| 玉环县| 洛宁县| 乌兰察布市| 苏尼特右旗| 吉首市| 佳木斯市| 大兴区| 彭山县| 双辽市| 奉化市| 云龙县| 泽库县| 昂仁县| 革吉县| 弥勒县| 会泽县| 荔波县| 黑水县| 自贡市| 娄底市| 赤峰市| 天峨县| 河北区| 左贡县| 内江市| 耿马|