我遇到了ASP.NET Webforms中的請求驗證問題,我很確定是我在IIS 7.5(Windows 7 - 本地開發機器)上託管一個.NET 3.5項目。禁用IIS 7.5上只安裝了.NET 4.0的.NET 3.5項目中的ASP.NET請求驗證
基本上我從外部站點接收回傳(即完全超出我的控制),並收到以下異常:
A potentially dangerous Request.QueryString value was detected from the client (DATA="<IDP MSGTYPE="Authen...").
我有這一套在頁聲明:
<%@ page language="C#" autoeventwireup="true" inherits="postexternal" enableviewstate="false" masterpagefile="~/SiteBase/transactional.master" Codebehind="postexternal.aspx.cs" validaterequest="false" %>
(和另外我試着在web.config中/頁關閉它,以及 - 無濟於事
我認爲這可能與ASP.NET 4.0所做的改變有關(如MS所述),如下所述: http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes#0.1__Toc256770147
但是,如果我將該配置添加到我的web.config中,錯誤(因爲它在.NET 2.0應用程序池中運行)。
無論我看上去我都困在這一刻,所以我會感謝任何人/指點/建議。無論如何,我可以通過其他方式解決這個問題嗎?)。我可以嘗試安裝.NET 2.0,但我不確定這是否會起作用(並且似乎是一種非常脆弱的方法)。
謝謝。
不是一個答案,但FYI如果你運行.Net 3.5,那麼.Net 2.0運行庫和庫已經安裝好了。 .Net 3.5基本上只是在.Net 2.0之上添加了一些額外的DLL - 它仍然使用.Net 2.0運行時。然而.Net 4終於得到了自己的CLR(運行時),並且運行在一個獨立於.Net 2.0的東西中。 – 2011-05-13 14:09:09
這似乎是正確的代碼。你是否檢查過這個站點正在使用的IIS 7.5應用程序池確實運行在.Net 2.0運行時(.Net 3.5使用2.0運行時)。母版頁或其他代碼或過濾器是否可以將validaterequest設置爲true?你是否完成了對網站的全面重新編譯以確保文件是最新的?看起來很愚蠢,但你有沒有仔細檢查過,你認爲你設置的ASPX與運行的是相同的?沒有URL重定向或任何東西? – 2011-05-13 14:13:39