2010-06-18 49 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模式。

奇怪的是,它有什麼作用,因爲請求驗證通常默認啓用,但無論如何。 「

相關問題