国产探花免费观看_亚洲丰满少妇自慰呻吟_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 " /> 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大石桥市| 宜川县| 安吉县| 土默特右旗| 原平市| 凭祥市| 沧州市| 吉安县| 遵义市| 盐池县| 开化县| 青神县| 平利县| 崇仁县| 吴桥县| 嘉定区| 博兴县| 大余县| 夏河县| 黄石市| 阜宁县| 正宁县| 邵东县| 定陶县| 泰来县| 西安市| 大余县| 贡嘎县| 海宁市| 临江市| 衢州市| 怀安县| 江口县| 汨罗市| 新巴尔虎左旗| 当涂县| 上虞市| 通江县| 方城县| 乌什县| 稷山县|