日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

验证视图状态 MAC 失败的解决办法

發(fā)布時間:2024/9/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 验证视图状态 MAC 失败的解决办法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?昨天用戶反應系統(tǒng)中有問題,問題就在于翻頁的時候,系統(tǒng)會報以下錯誤。但是我們的系統(tǒng)已經(jīng)上線1年多了,從來沒出現(xiàn)過錯誤,怎么會出現(xiàn)錯誤呢?
于是開始檢測,查找原因。
1. 出錯提示
“/”應用程序中的服務器錯誤。
驗證視圖狀態(tài) MAC 失敗。如果此應用程序由網(wǎng)絡場或群集承載,請確保 <machineKey> 配置指定了相同的 validationKey 和驗證算法。不能在群集中使用 AutoGenerate。
說明: 執(zhí)行當前 Web 請求期間,出現(xiàn)未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息: System.Web.HttpException: 驗證視圖狀態(tài) MAC 失敗。如果此應用程序由網(wǎng)絡場或群集承載,請確保 <machineKey>?
配置指定了相同的 validationKey 和驗證算法。不能在群集中使用 AutoGenerate。
源錯誤:
沒有行。
如圖


2.可能原因
?? 1) ASP.Net的 runat='server' 會對ViewStat進行MAC的加密,使得提交數(shù)據(jù)時只能對同一頁面進行。
?? 2) Cookie超時
?? 3) 錯誤三的原因可能是代碼寫錯了,即把數(shù)據(jù)不是提交給本頁,而是提交給了其他頁面,如下:
?? <body>
?? <form id="uploadForm" method="post" runat=server action="Main.aspx?act=upload&amp;path=<%= Server.UrlEncode(folderPath) %>" enctype="multipart/form-data">
<div id="container">
3. 處理方法
1 在接收頁加上(不添加ViewState,非安全方法)?
@ page EnableViewStateMac="false"
或者 enableEventValidation="false" viewStateEncryptionMode ="Never"
當然也可以在web.config的節(jié)點里加入:
<system.web>
??? <pages enableEventValidation="false" viewStateEncryptionMode="Never" enableViewStateMac="false/>
</system.web>
====================================================================
enableViewState 可選的 Boolean 屬性, 默認值為 True。
指定視圖狀態(tài)是否啟用并在多個頁請求之間保持。
enableViewStateMac 可選的 Boolean 屬性, 默認值為 True。
指定從客戶端回發(fā)頁時,ASP.NET 是否應該對頁的視圖狀態(tài)運行消息身份驗證代碼 (MAC)。如果為 True,將檢查加密的視圖狀態(tài),以驗證視圖狀態(tài)是否已在客戶端被篡改。
viewStateEncryptionMode 可選的 ViewStateEncryptionMode 屬性, 默認值為 Auto。此屬性是 .NET Framework 2.0 中的新屬性。
Always 視圖狀態(tài)始終加密。
Never 視圖狀態(tài)從不加密,即使控件請求加密時也是如此。
Auto 視圖狀態(tài)根據(jù)控件的請求而加密。
2 配置matchineKey(安全的方法)
<system.web>
??? <machineKey validation="3DES" validationKey="319B474B1D2B7A87C996B280450BB36506A95AEDF9B51211"
decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A87" decryption="3DES"/>
</system.web>
3.
在<head></head>之間加入如下代碼
<meta http-equiv="Page-Enter" content="RevealTrans(Duration=0,Transition=0)" />
以上方法來源自網(wǎng)絡,我使用了以上的方法,沒一個成功的,后來才發(fā)現(xiàn)原來我的代碼寫錯。
4.錯誤三執(zhí)行后的結果,如圖在瀏覽器中顯示為如下:
http://localhost:7124/Main.aspx?act=upload&path=%3C%=%20Server.UrlEncode(folderPath)%20%%3E
是由于"%3C%=%20Server.UrlEncode(folderPath)%20%%3E"這部分代碼造成的后果,只要把它修改為,實際值就可以了。
最后我把
?? <body>
?? <form id="uploadForm" method="post" runat=server action="Main.aspx?act=upload&amp;path=<%= Server.UrlEncode(folderPath) %>" enctype="multipart/form-data">
<div id="container">
先修改成
?? <body>
?? <form id="uploadForm" method="post" runat=server action="upload.aspx?act=upload&amp;path=<%= Server.UrlEncode(folderPath) %>" enctype="multipart/form-data">
<div id="container">
執(zhí)行之后,系統(tǒng)顯示的錯誤信息如下:

“/”應用程序中的服務器錯誤。


路徑中具有非法字符。

說明:?執(zhí)行當前 Web 請求期間,出現(xiàn)未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。?異常詳細信息:?System.ArgumentException: 路徑中具有非法字符。
最終修改成了
?? <body>
?? <form id="uploadForm" method="post" runat=server action="upload.aspx?act=upload&amp;path=" enctype="multipart/form-data">
<div id="container">
就解決了問題。把數(shù)據(jù)提交給了本頁面,而不是其他頁面。
所以很多時候,是由于自己寫代碼的時候不當心造成的。

總結

以上是生活随笔為你收集整理的验证视图状态 MAC 失败的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。