ASP.NET 程序提交表单数据中带有html标签不能提交或者提交报错问题

     今天在公司做另外的一个项目,又奇葩的遇到一个问题。

     在本地自己电脑上怎么测试都是正常的。但是先上服务器就出问题:

     用富文本编辑器上传一篇文章,始终报错,又没提示具体什么错误,也没说代码错误,点击提交按钮后始终不会请求相应的后台事件方法。

     首先根据自己的经验,想到是不是和之前遇到过的提交数据中含有html标签而造成不能提交表单问题。

     然后直接在页面加上:ValidateRequest="false"

     关键是加上后还是一样的错误,这个我就有点不知所措了,只显示个页面出错,写了日志,查看日志,还是不能请求我的后台代码。

     然后我把提交的数据全部写死,传入一个固定的值试一试(不带有html的),注意假设页面有富文本编辑器,富文本编辑器中最好不要填写值。此时可以提交表单了。

     基本问题已经找到了,说明问题还是表单数据中含有html标签,然后百度了一些,基本说的都是页面加一个:ValidateRequest="false",这样还是不能解决问题。

     后来终于解决问题,结果居然这么简单,解决方法如下:

     在webconfig中进行修改:

                                  在节点httpRuntime内加入:requestValidationMode="2.0"

                                  在节点compilation内加入:targetFramework="4.0"

     即变成:           

              <httpRuntime requestValidationMode="2.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"/>即可。

      在此,也谢谢博客园里的各位朋友的评论,从你们的评论互动其实我也能学到许多东西,谢谢。

原文地址:https://www.cnblogs.com/sharing1986687846/p/6229499.html