一、從客戶端中檢測到有潛在危險的request.form值
當頁面編輯或運行提交時,出現“從客戶端中檢測到有潛在危險的request.form值”問題,該怎么辦呢?如下圖所示:
下面博主匯總出現這種錯誤的幾種解決方法:
問題原因:由於在asp.net中,Request提交時出現有html代碼或javascript等字符串時,程序系統會認為其具有潛在危險的值。環境配置會報出“從客戶端 中檢測到有潛在危險的Request.Form值”這樣的Error。
1、當前提交頁面,添加代碼
打開當前.aspx頁面,頁頭加上代碼:validateRequest=”false”,如:
<%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="false" CodeFile="default.aspx.cs" Inherits="default" %>
2、全局修改web.config配置文件(此舉不建議、不安全)
打開web.config文件,在<system.web></system.web>中間,加上如下代碼:
<pages validateRequest="false" />
如果以上兩種方法都無法解決,請接着往下看,
問題原因:由於你當前的.net ifreamwork框架環境是4.0
3、同樣,打開web.config配置文件,在<system.web></system.web>中間,加上代碼:
<httpRuntime requestValidationMode="2.0" />
4、如果你的網站程序本身是net 2.0環境開發的,但放到了VS2010軟件里運行,也會出現這種情況,你可以把運行解決方案切換成net2.0即可,更換方法詳見頁面第3步:點擊進入
5、另一種處理方法:原因是所傳值含有特殊危險符號,那么可以在傳前,利用Server.HtmlEncode(string)方法,對字符串進行編碼,這樣就會將危險字符轉義為普通的字符。如TextBox1.Text=Server.HtmlEncode(str);
了解更多,參考微軟網頁:http://www.asp.net/whitepapers/request-validation
后面發現原來3年前,對此問題解決方法有過簡要總結,不過沒這么全面,看來經歷可以讓人成長是沒錯的,有總結此問題文章:VS2005調試問題解決方案集錦
本博文章基本上屬於原創或收集整理,都是心血結晶。
歡迎轉載分享,轉載請注明出處,謝謝!
本文地址:從客戶端中檢測到有潛在危險的 request.form值[解決方法]
二、MVC:從客戶端中檢測到有潛在危險的request.querystring值
[ValidateInput(false)] public ActionResult Search(string key, string id = "", string bid = "", int page = 1, int limit = 15, int p = 0, int t = 0) { return View(); }
