2010-06-18 95 views
2

由于某种原因,.NET 4损坏了ValidateRequest=“false”ValidateRequest =“false”和.NET 4问题

解决方案是 - 只需将<httpRuntime requestValidationMode="2.0" />放入您的web.config文件。

该解决方案的问题是它打破了对.NET 2.0的支持!

IIS拒绝接受web.config中的未知属性。此外,我不喜欢这种全部或全部的性质。

我可以为需要它的单个页面设置requestValidationMode(或以某种其他方式禁用请求验证)吗?没有破坏web.config与2.0的向后兼容性?

+1

”它拒绝接受web.config中的未知属性。“这是什么意思?当我把例如''无论我设置了<',我在启动应用程序时遇到错误(“未知的blabla属性”) 。究竟是什么问题? – Slauma 2010-06-18 22:47:12

+0

问题是我无法在.NET 2和.NET 4下运行相同的web.config。 – 2010-06-19 00:44:14

+0

@MK为什么您需要在NET2和NET4下具有相同的配置?我认为你试图做的事情认为这是无法完成的。 – Aristos 2010-06-19 05:55:22

回答

0

OK,貌似这不能做,我只是容易逃脱的数据,但我认为这是一个合理的问题 - 至少在这里做出说明,这不能做。

-1

我只是把这个放在我的web.config中的system.web节点中。

<httpRuntime requestValidationMode="2.0" /> 
+1

我想这可能会混乱2.0支持,然后在你的web.config中。 – Mike 2010-06-18 21:03:21

+1

是的,这就是问题所在。它打破2.0。它是整个应用程序的毛毯。 – 2010-06-18 21:20:32

0

我觉得我找到了更好的方法。我不喜欢在4.0版本中恢复到2.0设置的选项。我也不喜欢全部或没有选择。

我玩过几件事情,至少在我脑海中有一个实际的解决方案。 默认情况下,所有页面都不管验证“ValidateRequest =”的页面指令虚假”

我发现那里此设置在称为页system.web节在web.config的 (HTTP:// msdn.microsoft.com/en-us/library/system.web.configuration.pagessection.validaterequest.aspx)

如果validateRequest属性添加到您可以控制整个网站的验证页面元素。

但我苹果塞进袋子在测试这件事时,遇到了一件幸福的事情。我找不到这方面的文章,但这是我所经历的。 默认情况下验证在任何地方都被打开,但是如果我将validateRequest设置为“true”,那么我的单独页面指令就​​像在2.0中那样工作。我不知道为什么,但我很高兴。

所以总结... 将validateRequest设置为true。 喜欢这里。

然后,任何页面指令都适用于该验证。

+0

哦,废话。我发现我有一些其他的配置问题,这给我一个误判。我想你几乎可以忽略我的上面的喧嚣,除了可能对web配置页面部分有更深的理解。 – Nate 2010-11-11 17:17:58

+0

因此,经过更多的工作,我会虚心承认,除了设置requestValidationMode =“2.0”之外,没有什么可以解决这个问题。但是我在Web配置的页面部分中设置了validateRequest =“true”属性。然后在逐页的基础上,我可以禁用验证。 – Nate 2010-11-11 21:56:22

1

我可以确认在web.config文件中添加validateRequest =“true”的方法有效,它非常棒!

使用此操作可以使页面级指令再次正确工作,并避免将行为更改回ASP.Net2.0模式。

奇怪的是,它有什么作用,因为请求验证通常默认启用,但无论如何。 “