如果要通過允許的要求,需要添加requestPathInvalidCharacters
和設置爲空字符串:
<system.web>
<httpRuntime requestPathInvalidCharacters="" />
</system.web>
編輯你應該離開你原來的問題的地方,因爲現在我的答案是沒有意義的。
但在回答你的第二個問題時,這是因爲%3f對應於'?'這在Windows的文件名中是不允許的。您可以將relaxedUrlToFileSystemMapping
屬性設置爲true
改變這種行爲:
<system.web>
<httpRuntime requestPathInvalidCharacters=""
relaxedUrlToFileSystemMapping="true" />
</system.web>
你可能想看看通過所有在HttpRuntimeSection類中的屬性,看看是否有可能適用的任何人。
你也可以實現一個RequestValidator的子類,並設置你的web.config使用你的子類(這大概會允許所有的URL通過?)。就個人而言,我不會打擾,只是讓內置的類來處理它。一個普通用戶不太可能每次都去在路徑中輸入「%3f」,爲什麼還要花費很多麻煩來改善惡意用戶的使用情況呢?
順便說一下,這實際上是ASP.NET 4中的一項新功能,這就是爲什麼Stack Overflow不會吐出一個錯誤:它運行在.NET 3.5上。
解決了這個問題。但我得到另一個URL的另一個錯誤。我將編輯該問題。 – stacker 2010-05-14 00:41:34
1.重寫路徑。 2.返回空白頁面(或自定義錯誤頁面)。 3.重定向到主頁。我想有權決定如何應對這種錯誤。 – stacker 2010-05-14 01:29:42
我可以爲此進行集成測試嗎? http://stackoverflow.com/questions/2831075/integrationtests-a-potentially-dangerous-request-path-value-was-detected-from-t – stacker 2010-05-14 02:15:29