今天在 VS2010 RC 中建立了一個 Web Form 專案, 把以前的程式貼進來, 一執行, 打了幾個字, 就跳出一個 "A potentially dangerous Request.Form value was detected from the client (ctl00$MainContent$TextBox1="")." 的錯誤...
今天在 VS2010 RC 中建立了一個 Web Form 專案, 把以前的程式貼進來, 一執行, 打了幾個字(例如 "<?"), 就跳出一個 "A potentially dangerous Request.Form value was detected from the client (ctl00$MainContent$TextBox1="<?")." 的錯誤。
由於我已經確定在 .aspx 的開頭 @Page 指示中加上了 ValidateRequest="false" 述句, 它不應該再引起什麼輸入檢查的錯誤才對, 而且我還特別把 VS2008 開來檢查, 確定在 VS2008 是沒有問題的。後來在噗浪上問了幾位 MVP 朋友, 結果 Loloto、保哥和 Demo 很快幫我確認了這個問題, 並且提供了解決的方法, 那就是必須在 Web.config 中加上一行設定:
<system.web> <httpRuntime requestValidationMode="2.0" /> ... </system.web>
這麼做就可以解決問題了。
後來又做了一些功課, 發現這是 ASP.NET 4.0 中一個重大改變之一。對此主題有興趣的人可以先去看一下英文版的「ASP.NET 4 Release Candidate (RC) Breaking Changes」; 我自己則偷一下懶, 就不幫各位翻譯了。