validateRequest="false" 表现异常

6

(ASP.NET 4.0 C#)

我在webconfig中设置了<httpRuntime requestValidationMode="2.0" />,并在页面目录中设置了validateRequest="false"

在一个页面上,我从ckeditor(textarea)发送一些数据(html)到数据库。工作正常。 在另一页上,我用从数据库中获取的数据填充ckeditor,然后更新它(发送回来),结果出现了“客户端检测到一个潜在危险的 Request.Form 值”这个著名的错误。

这让我很困惑。唯一的区别是第二个页面上的数据是动态插入到文本区域中的,而第一个页面上的文本区域在页面加载时为空。我错过了什么吗?我很确定编码/解码没有任何意义,因为框架在我甚至可以开始在后端操作之前就停止了它。


你确定两个页面都设置了validateRequest=false吗?或许可以将其移至web.config文件中。 - Aristos
ValidateRequest 区分大小写吗? - IrishChieftain
3个回答

1

好的,我还没有找到为什么它表现出这种方式的答案。但是,我发现了一个非常简单且快速解决它的方法(加上新的好处)。

有个人做了一个 .net ckeditor 控件。

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

好了,像魔法一样运作。没有任何验证错误。


0

我在页面指令中已将validateRequest设置为false,就像我在问题中所述 :) 另一个线程真的没有帮助,但我会尝试查看你发送给我的另一个链接。感谢您的答案 :) - Kasper Skov
检查IIS中的应用程序池基本设置,看看是否设置为4.0。如果没有,这可能是问题所在。 - IrishChieftain
我只是通过VS10在虚拟服务器上运行它 :) - Kasper Skov
请查看此链接:https://dev59.com/lHE85IYBdhLWcg3wqVT4 - IrishChieftain
是的,抱歉这并没有真正帮到你。他在webconfig中错过了<httpRuntime requestValidationMode="2.0" />。我在我的问题中已经声明了我已经有了这个。 - Kasper Skov
没问题,很高兴你找到了备选方案 :-) - IrishChieftain

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


啊哈。有趣。我会研究一下的。顺便说一下,关于问题的一点更新。显然,框架并没有阻止我的数据被放入数据库,只是显示了错误:S。 - Kasper Skov
好的David,我已经阅读了它。很好的东西。但是你不是在说与msdn完全相反的话吗?对我来说,听起来像是(在阅读你的链接后)我不必担心验证错误。我的唯一关注点是如果我想要验证某些特定的东西。但是你不是在说它将始终进行验证 - 无论如何吗? - Kasper Skov
无论如何,我真的不想再为此浪费眼泪了。我想我会按照你说的自己制作requestValidator。在msdn上有一个很好的例子。感谢你的时间,伙计。 - Kasper Skov
好的。我整晚都做噩梦,关于这个问题。David,你有什么解释吗?很奇怪的是,当 ckeditor 为空时,框架会忽略“危险”标签,但是当编辑器中有数据时,就会出现错误。代码是相同的。 - Kasper Skov
1
很抱歉,这不是真的。如果您使用requestValidationMode="2.0",并且您不需要任何验证,您就不需要实现自己的请求验证器。 - configurator

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接