2009-08-26 80 views
2

任何人都可以解釋什麼可能會導致此錯誤。我想它的報價。Form Post Error

Exception Details: System.Web.HttpRequestValidationException: A potentially 
dangerousRequest.Form value was detected from the client 
(ctl00$ContentPlaceHolder1$DetailsView1$txtContent="...l economy.<br /><br />The 
Prop..."). 

回答

1

控制(可能是一個文本框)的內容包含哪些ASP.net認爲是標記,如:

<br /><br /> 

您可以在.aspx文件中添加ValidateRequest =「假」的Page指令如下:

<%@ Page ........ ValidateRequest="false" ........ %> 

至於其他的答案中指出,asp.net這樣做是爲了儘量保護您免受潛在的惡意輸入,所以請確保您知道風險和編碼/解碼的用戶數據適當的。

+0

可以在生產環境中將其設置爲false嗎? – madphp 2009-08-26 15:03:18

+0

如果您很高興該頁面上的控件*應該*提交包含標記或內容的內容,*看起來像*它包含標記,那麼是的。沒有性能風險,這是一個asp.net實施的保障 – Rob 2009-08-26 15:19:47

0

這將是'<'和'>'。

編輯:它假定包含窗體響應中的html條目旨在作爲表單所在的服務器上的攻擊。因此,默認情況下,任何類似html的代碼(即包含'<'或'>')都會自動標記爲問題。解決這個

一種方式是通過設置validateRequest =「假」在該頁面的Page指令關閉這種類型的驗證,但也有其他(更好)的方式來解決這一點。

Here's有關Microsoft此信息的一些信息。

+0

將validateRequest更改爲false是危險舉動,如果不知道用戶,站點和系統的風險,則不應更改。該URL確實有關於如何處理這些問題的一些很好的信息。 – 2009-08-26 15:29:11

0

它的html「< br/>」標籤。

這是an article with a brief explanation。還向您顯示如何通過關閉驗證來解決此問題。雖然我想這只是關閉它而有點危險。

0

它實際上應該是

<br /><br /> 

它抱怨。

0

我的想法來看看:允許拋出此異常。使用Application_Error處理程序編寫代碼,該代碼重定向(使用Response.Redirect - 這很重要,因爲這可以讓用戶的瀏覽器返回)用戶到自定義錯誤頁面。在這個頁面上寫下一些文字,解釋用戶錯誤地輸入了一些文字。例如:

「尊敬的用戶,您輸入了一些無效的文本,如」<「或」。「,請僅使用字符和數字輸入文本。

把該網頁上的鏈接,而這個鏈接可以包含一個javascript「後退」指令:

href="javascript: history.go(-1)" 
點擊suchlink將通過他們的瀏覽器被重定向到前一頁後

用戶,在那裏他們可以重新 - 編輯他們的輸入。