2010-09-14 79 views
3

我的ASP.NET頁面有一個<asp:TextBox />其文本輸入通過HttpUtility.HtmlEncode();上輸入ASP.NET JavaScript錯誤

被編碼的頁面還包含驗證,如<asp:RequiredFieldValidator /><asp:CustomValidator />以及一些AJAX工具包<toolkit:ValidatorCalloutExtender />

如果用戶輸入</在文本框中的文本,JavaScript錯誤

A potentially dangerous Request.Form value was detected 
from the client (ctl00$contentPlaceHolder$ucLookup$tbxLastName=&quot;&lt;/&quot;) 

提交表單時發生。我曾嘗試添加各種事件處理程序,如

protected void Page_PreInit(object sender, EventArgs e){} 
protected void Page_Init(object sender, EventArgs e){} 
protected void Page_PreLoad(object sender, EventArgs e){} 

,並設置斷點,但沒有人被擊中,導致我相信錯誤僅發生在客戶端。

如何調試此錯誤?是否有任何鉤子允許我攔截用戶的輸入並在導致此問題之前對其進行過濾或編碼?

+1

如果它的javascript錯誤,然後嘗試在firefox瀏覽器中使用firebug來調試JavaScript或如果它在Internet Explorer中,在設置 - >高級下,取消選中禁用JavaScript調試選項。你應該在JavaScript引發錯誤的地方。 – 2010-09-14 17:08:55

+0

謝謝。使用螢火蟲,錯誤是: 從客戶端檢測到有潛在危險的Request.Form值(ctl00 $ contentPlaceHolder $ ucLookup $ tbxLastName = " </")。 有關如何在客戶端嘗試驗證之前攔截輸入的想法?具體而言,我寧願不在我的所有網頁上設置validateRequest =「false」... – Alex 2010-09-14 17:13:29

回答

0

對於這種潛在危險的錯誤,你可以做以下,並看看是否有幫助 -

添加一行:<pages validateRequest="false" /><system.web>部分內

+0

根據上面的評論,有沒有辦法做到這一點,而不需要設置validateRequest =「false」?在驗證發生之前是否有鉤子可以攔截? – Alex 2010-09-14 18:49:24