今天在公司做另外的一個項目,又奇葩的遇到一個問題。
在本地自己電腦上怎么測試都是正常的。但是先上服務器就出問題:
用富文本編輯器上傳一篇文章,始終報錯,又沒提示具體什么錯誤,也沒說代碼錯誤,點擊提交按鈕后始終不會請求相應的后台事件方法。
首先根據自己的經驗,想到是不是和之前遇到過的提交數據中含有html標簽而造成不能提交表單問題。
然后直接在頁面加上:ValidateRequest="false"
關鍵是加上后還是一樣的錯誤,這個我就有點不知所措了,只顯示個頁面出錯,寫了日志,查看日志,還是不能請求我的后台代碼。
然后我把提交的數據全部寫死,傳入一個固定的值試一試(不帶有html的),注意假設頁面有富文本編輯器,富文本編輯器中最好不要填寫值。此時可以提交表單了。
基本問題已經找到了,說明問題還是表單數據中含有html標簽,然后百度了一些,基本說的都是頁面加一個:ValidateRequest="false",這樣還是不能解決問題。
后來終於解決問題,結果居然這么簡單,解決方法如下:
在webconfig中進行修改:
在節點httpRuntime內加入:requestValidationMode="2.0"
在節點compilation內加入:targetFramework="4.0"
即變成:
<compilation debug="true" targetFramework="4.0"/>
特別說明,網上好多說的都是加入requestValidationMode="2.0"即可,這個我試了是不行。原因是因為我的網站的.NET FrameWork版本是4.0的,所以這個根據自己網站的.NET FrameWork版本來修改。如果版本是4.0及其以上的必須兩個加入。
總結,對於網站提交表單數據中含有html標簽不能提交的,如果網站.NET FrameWork版本是4.0及其以上的,需要在webconfig中加入:
<httpRuntime requestValidationMode="2.0"/>
<compilation debug="true" targetFramework="4.0"/>
如果.NET FrameWork版本是4.0以下的,添加<httpRuntime requestValidationMode="2.0"/>即可。
在此,也謝謝博客園里的各位朋友的評論,從你們的評論互動其實我也能學到許多東西,謝謝。
