2009-11-10 73 views
0

我的網站正在ASP.NET 3.5,IIS7,集成pipiline模式下工作。我的HttpModule獲取所有資源的請求,包括這樣的URL: http://my-site.com/address我可以通過HttpModule獲取包含*之前的URL嗎?

而且我會在用戶的URL中支持'*'符號。所有試圖導航到該地址被阻止通過ASP.NET與以下錯誤消息:

HTTP錯誤400.0 - 錯誤的請求ASP.NET 檢測無效字符在URL中。

在這種情況下,執行沒有到達'BeginRequest'處理程序。

是否有任何可能性來獲得處理帶有'*'符號的URL(如果可能,還有其他保留)。

感謝

回答

0

什麼是具有URL中的*的目的,你可以禁用某些URL過濾設置,允許這一點,但這樣會影響您的網站的安全性。看看下面的,如果你真的需要這樣做:

http://dirk.net/2008/06/09/ampersand-the-request-url-in-iis7/ http://support.microsoft.com/kb/820129 http://www.lostechies.com/blogs/joshuaflanagan/archive/2009/04/27/asp-net-400-bad-request-with-restricted-characters.aspx

一個HttpModule這是正確編碼並在web.config中註冊會自動收到該ASP.Net開始的任何請求進程,如果ASP.Net在開始處理之前拒絕請求,那麼BeginRequest方法將永遠不會被調用。

根據你正在嘗試做什麼,創建一個HttpHandler並用通配符路徑註冊它可能會更好。

+0

這兩個鏈接第一和第二假設更新註冊表設置(這是不適合我,因爲我的網站是由大公司託管的,當然不會改變我的註冊表)。 第三包含解釋爲什麼這是不可能的鏈接(這是你的第一個鏈接:)),並建議在'?'之後放置這樣的符號。 這兩種都不適合我。所以我猜想沒有其他的方式來實現我的請求。 我客人,我應該改變我的邏輯和URL沒有「*」活... :( 如果有任何其他的想法 - !任何人都歡迎 RobV,無論如何,謝謝你的回答。 – Budda 2009-11-12 18:44:06

相關問題