validateRequest =“false”表现得很奇怪

时间:2011-04-04 20:25:52

标签: c# asp.net webforms ckeditor validate-request

(ASP.NET 4.0 C#)

我在webconfig中有<httpRuntime requestValidationMode="2.0" />。和 我在页面目录中有validateRequest="false"

在一个页面上,我将一些数据(html)从ckeditor(textarea)发送到数据库。工作良好。 在另一个页面上,我用数据库中的数据填充ckeditor,然后我更新它(发送回来),我得到着名的“从客户端检测到一个潜在危险的Request.Form值。”

让我很困惑。唯一的区别是在第二页上数据被动态插入到textarea中,在第一页上textarea在pageload上是空的。我错过了什么吗?我很确定编码/解码没有任何意义,因为框架在我甚至可以在后端开始搞乱之前就停止了它。

3 个答案:

答案 0 :(得分:1)

好吧,我还没有找到答案,说明它为什么会这样。但是,我找到了一个非常简单快捷的方法(+新的好处)。

Theres是一个制作.net ckeditor控件的人

http://cksource.com/forums/viewtopic.php?f=11&t=15882

你去吧。奇迹般有效。没有验证错误。

答案 1 :(得分:0)

尝试在页面指令中将ValidateRequest设置为false?更好的选择可能是使用Microsoft Anti-Cross Site Scripting Library:

http://msdn.microsoft.com/en-us/library/aa973813.aspx

这里回答了类似的问题:

What's the difference between requestValidationMode 2.0 and 4.0

也可能没有安装ASP.NET 4.0,或者应用程序池未设置为在4.0下运行。

答案 2 :(得分:0)

ValidationRequest =“false”仅适用于框架先前版本中的.aspx文件。

在ASP.NET 4中,它在任何HTTP请求的BeginRequest阶段之前启用所有请求。因此,请求验证适用于所有ASP.NET资源的请求,例如Web服务调用和自定义HTTP处理程序。

要绕过这个新机制,必须创建自己的RequestValidator并更改web.config以使用此自定义验证器。

http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator.aspx