由於在.Net中,Request時出現有Html或Javascript等字符串時,系統會認為是危險性值。立馬報錯。
解決方案一:
在.ASPx文件頭中加入這句:
<%@ Page validateRequest="false" %>
解決方案二:
修改web.config文件:
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
因為validateRequest默認值為true。只要設為false即可。
==========
如果未關閉ValidateRequest時,用以下ASP.Net代碼進行危險捕獲和提示:
protected void Page_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
if (ex is HttpRequestValidationException)
{
Response.Write("輸入的內容中有危險字符,比如<>等");
Server.ClearError(); // 如果不ClearError()這個異常會繼續傳到Application_Error()。
}
}
//檢查代碼,把代碼轉義成Html代碼形式
protected void Button1_Click(object sender, EventArgs e)
{
// 將輸入字符串編碼,這樣所有的Html標簽都失效了。
StringBuilder sb = new StringBuilder(HttpUtility.HtmlEncode(ftbContent.Text));
// 然後我們選擇性的允許<b> 和 <i>
sb.Replace("<b>", "<b>");
sb.Replace("</b>", "");
sb.Replace("<i>", "<i>");
sb.Replace("</i>", "");
ftbContent.Text = sb.ToString();
}