出這個問題基本上是在轉址字符串中有非法字符“<”,'&'之類的。
方案1:
如果僅僅只是轉換頁面,傳參時出現的問題,可對數據加密:
綁定數據傳值時加密 <%#Server.UrlEncode(Eval("UserId").ToString())%> 解密:HttpUtility.UrlDecode(request.QueryString["userid"].Tostrin
方案2:
如果是對數據庫數據進行操作時出現此問題,第一、可以在存入數據庫中之前加入字符過濾功能(具體實現方法百度一下,你就知道)。第二、也可以用JS加判斷:
具體代碼如下:
if(a.value.indexOf("$")!=-1)
alert("不允許包含字符:$")
}
方案3:
如果不是前兩種問題那么最直接簡單的方法就是取消微軟對其特殊字符的驗證了,不過壞處很明顯!安全性不高!
只需在Web.Config配置文件中加入<httpRuntime requestPathInvalidCharacters="" />即可!
跟出現從客戶端(&)中檢測到有潛在危險的 Request.Form問題時在Page節點中加入ValidateRequest="false"的道理一樣!取消驗證,最懶的方法!注意安全性不高哦。
方案4:
如
出現這個問題,一般是由於.Net Framework 使用了4.0版本造成的。(從 .Net Framework 4.0 開始,ASP.NET開始強制檢測Request參數安全),而我們可以通過修改 Web.config 來恢復 2.0 版本的模式。
方法如下:
修改Web.config,增加requestValidationMode="2.0"屬性值
<span style="font-size:18px;"> <httpRuntime maxRequestLength="2097151" executionTimeout="3600" <span style="color:#FF0000;">requestValidationMode="2.0" </span>/> </span>