2014-02-06 38 views
5

我們注意到,有幾臺機器在使用散列參數的URL上存在問題。什麼解碼我的編碼哈希符號(%23)?

當調試與URL的請求:
http://domain.com/Entity(%23{number-here}

我們看到Application_BeginRequest方法在global.asax文件的URL: http://domain.com/Entity(#23{number-here}Url.OriginalStringUrl.LocalPath具有http://domain.com/Entity(和散列後,所有的字符都在Url.Fragment

在運行Windows 8.1和IIS 8.5的計算機上運行完全相同的應用程序時,它按預期工作,Url.OrinalStringhttp://domain.com/Entity(%23{number-here}

我在web.config的URL重寫部分或IIS配置中看不到任何可疑的東西。

這種行爲的原因是什麼?

+0

也爲$字符(%24),我相信..? – bit

回答

4

這是System.Web.dll中的一個錯誤。它固定在Windows 8.1上,但我們尚未在操作系統的低級版本上推出對System.Web.dll的修復。當下一次可靠性更新發布時,我們正試圖爲所有支持的操作系統修復.NET 4.5.x。

+0

感謝您的快速和官方迴應!所以在此期間你建議我們做什麼?這個問題最好的解決方法是什麼?謝謝。 – gdoron

+1

嘗試查詢其他屬性,例如HttpRequest.Path或HttpRequest.AppRelativeCurrentExecutionFilePath。不幸的是,HttpRequest.Url屬性在這些情況下沒有這個錯誤修復就太不可靠了。 (無論如何,您可能會很聰明並且使用HttpRequest.Url,執行一些啓發式檢查來解決此問題,但是我建議不要這樣做,因爲一旦實際修補程序熄滅,任何解決方法都可能會中斷。) – Levi

+0

Windows服務器?這個bug也影響他們嗎?他們全部?只有一些版本?有沒有關於這個bug的頁面? – gdoron

0

這是老操作系統的解決方法,直到錯誤修復被移植回來。如果您有更改網址的好處,請將可能包含散列的術語放入查詢字符串參數中,例如

http://domain.com/?entity=Entity(#23{number-here} 
+0

這將是更好的使用HttpUtility.Decode()方法,而不是.. – bit