由於在.net中,Request時出現有HTML或Javascript等字符串時,系統會認爲是危險性值。立馬報錯上面的錯誤。
解決辦法:
解決方案一:
在.aspx文件頭中加入這句:
<%@ Page validateRequest="false" %>
解決方案二:
修改web.config文件:
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
因爲validateRequest默認值爲true。只要設爲false即可。
當然,這樣只能是讓界面好看一些,要想抵制注入,還得從過濾上做足功夫
然後,還是有不禁用validateRequest的方法的,如下
不禁用validateRequest=false。
正確的做法是在你當前頁面添加Page_Error()函數,來捕獲所有頁面處理過程中發生的而沒有處理的異常。然後給用戶一個合法的報錯信息。如果當前頁面沒有Page_Error(),這個異常將會送到Global.asax的Application_Error()來處理,你也可以在那裏寫通用的異常報錯處理函數。如果兩個地方都沒有寫異常處理函數,纔會顯示這個默認的報錯頁面呢。
舉例而言,處理這個異常其實只需要很簡短的一小段代碼就夠了。在頁面的Code-behind頁面中加入這麼一段代碼:
以下是引用片段:
protected void Page_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
if (ex is HttpRequestValidationException)
{
Response.Write("請您輸入合法字符串。");
Server.ClearError(); // 如果不ClearError()這個異常會繼續傳到Application_Error()。
}
}