.NET 4由于某种原因破坏了ValidateRequest=“false”
。
解决方案是 - 只需将<httpRuntime requestValidationMode="2.0" />
放入您的web.config文件中。
该解决方案的问题在于它破坏了对.NET 2.0的支持!
IIS拒绝接受web.config中的未知属性。我也不喜欢这种全有或全无的性质。
我是否可以为需要它的单个页面设置requestValidationMode(或以其他方式禁用请求验证)?不破坏web.config
与2.0的后向兼容性
答案 0 :(得分:1)
我可以确认将validateRequest =“true”添加到web.config文件的方法有效并且非常棒!
使用它可以使页面级指令再次正常工作,并且无需将行为更改回ASP.Net2.0模式。
奇怪的是它有任何影响,因为无论如何通常默认启用请求验证,但无论如何。
答案 1 :(得分:0)
好的,看起来这样做是不行的,我可以轻松地逃避数据,但我认为这是一个合理的问题 - 至少在这里做一个说明,这是不可能的。
答案 2 :(得分:0)
我玩了几件事,至少在我的脑海里有一个实用的解决方案。 默认情况下,无论页面指令“ValidateRequest =”false“
如何,都会验证所有页面我在名为pages的system.web部分的web.config中找到了在何处进行此设置。 (http://msdn.microsoft.com/en-us/library/system.web.configuration.pagessection.validaterequest.aspx)
如果将validateRequest属性添加到pages元素中,则可以控制整个站点的验证。
但是在测试时我偶然发现了一件幸福的事情。我无法找到这方面的证据,但这是我所经历的。 默认情况下,验证在任何地方都会打开,但如果我将validateRequest设置为“true”,我的单个页面指令就像在2.0中一样。我不知道为什么,但我很高兴。
总结...... 将validateRequest设置为true。 像这儿。
然后任何页面指令都适用于该验证。
答案 3 :(得分:0)
如果使用的是.net4,则将此行添加到Web配置
<pages validateRequest="false">
完全不需要使用<httpRuntime requestValidationMode="2.0" />
答案 4 :(得分:-1)
我只是把它放在system.web节点的web.config中。
<httpRuntime requestValidationMode="2.0" />